我在 Mac OSX 10.8.2 上安装了 MySQL 5.6.10,位于/usr/local/mysql-5.6.10-osx10.7-x86_64/中。然后我尝试运行一个 Perl 程序,该程序使用 DBI 和 DBD::mysql 连接到 MySQL 数据库。我收到以下错误:
install_driver(mysql) failed: Can't load '/Users/chap/perl5/perlbrew/perls/perl-
5.16.1/lib/site_perl/5.16.1/darwin-2level/auto/DBD/mysql/mysql.bundle'
for module DBD::mysql: dlopen(/Users/chap/perl5/perlbrew/perls/perl-
5.16.1/lib/site_perl/5.16.1/darwin-2level/auto/DBD/mysql/mysql.bundle,
1): Library not loaded: /usr/local/lib/libmysqlclient.18.dylib
Perhaps a required shared library or dll isn't installed where expected
(当我使用“brew”(与 perlbrew 无关)将 mysql 5.5 安装到它自己的目录/usr/local/Cellar/时,效果很好。由于brew 还不知道 5.6,所以我安装了它手动。)
我能够从 mysql 命令行启动 mysqld 并成功连接。这个错误是否表明 Perl 的 DBD::mysql 模块有问题?它是最新的;也许它无法与 MySqL 5.6 对话?
谢谢!
最佳答案
我在 Mac 上安装 DBD::mysql 时遇到了几个问题,我发现可以解决以下问题 Mac OSX 10.6.8,带有 Perl 5.16.1 和 MySQL 5.5.27,其中 mysql 安装在/usr/local/中。 请仔细检查以下命令中使用的所有路径和用户名。
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
curl -kL http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.021.tar.gz > DBD-mysql-4.021.tar.gz
gunzip -c DBD-mysql-4.021.tar.gz | tar xopf -
cd DBD-mysql-4.021 && perl ./Makefile.pl --testuser root --libs="-L/usr/local/mysql/lib -lmysqlclient -lpthread"
install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib blib/arch/auto/DBD/mysql/mysql.bundle
make test
sudo make install
然后检查连接(假设您仍然启用测试数据库和匿名用户)
perl -e "use DBD::mysql; my $dbh = DBI->connect('dbi:mysql:test:localhost::3306:mysql_socket=/tmp/mysql.sock'); $dbh->disconnect();"
关于mysql - perl DBD::mysql 不适用于 mysql 5.6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15286991/