【XAMPP】PerlのMySQLエラー解消(mysql.xs.dll/DBD::mysql)

XAMPPでPerl使おうとしたらMySQL周りでエラーが出て大変困った件。
調べに調べてなんとか解決したので、残しておきます。
ご参考までに。
ちなみに普通にインストールしたXAMPPですので正確にはMySQLではなくMariaDBですね。

XAMPPのPerlでMySQLエラー発生

XAMPPをインストールし、環境変数にPerlとMySQLのPATHが追加されている状態が前提です。
コマンドラインで
mklink /j C:\usr
とやって、Perlのパスは「/usr/bin/perl」になるようにしています。

さてこれで普通にPerlは動かせるのですが、MySQLを使うスクリプトが動きません。
Software errorとなります。
エラーメッセージは下記の通り。
install_driver(mysql) failed: Can't load 'C:/usr/vendor/lib/auto/DBD/mysql/mysql.xs.dll' for module DBD::mysql: load_file:指定されたモジュールが見つかりません。 at C:/usr/lib/DynaLoader.pm line 193.
at (eval 8) line 3.
Compilation failed in require at (eval 8) line 3.
Perhaps a required shared library or dll isn't installed where expected
at ./pl/mylink_db.pl line 243.

足りないのはlibmysql__.dllだった!Strawberry Perlを利用して解決

最初はDBD::mysqlをインストールせんといかんのでは?とcpanだのなんだのやってみましたがそっちでもエラーが出て手詰まり。
調べていくとどうも

mysql.xs.dllが読めない = libmysql__.dllが足りない

という事らしい。
道理で、ちゃんとC:/usr/vendor/lib/auto/DBD/mysql/mysql.xs.dllは存在しているのにオカシイと思いましたよ……。
でこのlibmysql__.dllをどこから持ってくればいいかというと、本家の「Strawberry Perl」から拝借します。
https://strawberryperl.com/releases.htmlにあるPortable版のzipファイルをダウンロードしましょう。
zipファイルを解凍したら中に
\c\bin\libmysql__.dll
があるはずなので、それを
C:\usr\vendor\lib\auto\DBD\mysql
内にコピーします。

これだけであっさりエラー解消しました。
ものすごく苦労して調べたのはなんだったんだ……。
最新のXAMPPに入ってるのもStrawberry Perlのはずなんですが、なんでこんなエラー起きるんですかね?
まぁ、とりあえず解決したのでヨシ!
カテゴリ:Perl 
 @nwsweb