閉じる

install_driver(mysql) failed: Can’t load ‘/usr/local/lib64/perl5/auto/DBD/mysql/mysql.so’ for module DBD::mysql: /usr/local/lib64/perl5/auto/DBD/mysql/mysql.so: undefined symbol: net_buffer_length at /usr/lib64/perl5/DynaLoader.pm line 193.

mariadbの更新に伴って、DBD::mysqlの更新をしたら件のエラー。
どうも、mariadbの特定バージョンからは件のシンボルが定義されない模様。
ソースを取ってきて、Use options interface for net_buffer_length in MariaDB 10.2.9+ · Issue #220 · perl5-dbi/DBD-mysql · GitHubよりパッチを当てる。

# wget 'http://www.cpan.org/modules/by-module/DBD/DBD-mysql-4.046.tar.gz'
# tar xf DBD-mysql-4.046.tar.gz
# cd DBD-mysql-4.046
# patch<
+++ mysql.xs 2017-11-18 08:36:18.330180620 -0800
@@ -790,7 +790,8 @@
D_imp_dbh(dbh);
IV type = 0;
SV* retsv=NULL;
-#if !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50709
+#if (!defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50709) || \
+ (defined(MARIADB_VERSION_ID) && MARIADB_VERSION_ID >= 100209)
/* MariaDB 10 is not MySQL source level compatible so this only applies to MySQL*/
IV buffer_len;
#endif
@@ -822,7 +823,8 @@
retsv = newSVpvn("`", 1);
break;
case SQL_MAXIMUM_STATEMENT_LENGTH:
-#if !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50709
+#if (!defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50709) || \
+ (defined(MARIADB_VERSION_ID) && MARIADB_VERSION_ID >= 100209)
/* MariaDB 10 is not MySQL source level compatible so this
only applies to MySQL*/
/* mysql_get_option() was added in mysql 5.7.3 */
# perl Makefile.PL
# make
# make install

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)