オープンソースこねこね

Webプログラミングなどについてあれこれ。

MySQL server version for the right syntax to use near 'delimiter ... というエラーで少しハマった件

というMigrationプログラムを自作したのですが、このプログラムでMySQLのトリガを作成するSQLを実行したら、

mysql server version for the right syntax to use near 'delimiter ...

というエラーがでて動作しませんでした。PHPからPDOでMySQLに接続してSQLを実行しているだけなんですが。

で、ちょっと調べたら、トリガ作成の時に使用してるdelimiterというコマンドが問題で、これはSQLではなくて、mysqlのクライアント/usr/bin/mysqlが用意しているコマンドとのこと。は~。どうりで動かんわけだ。

とはいえdelimiterを使えないのはちょっと困るので、SQLの実行をPDOの代わりにmysqlコマンドで行うことができるようにPHPMigrateをアップデートしました。

https://github.com/kohkimakimoto/phpmigrate

以下のように設定してやれば、DBへの接続はPDOの代わりにmysqlコマンドを使用するになります。これでdelimiterも使えるようになります。

MigrationConfig::set('mysql_command_enable',    true);
MigrationConfig::set('mysql_command_cli',       "/usr/bin/mysql");
MigrationConfig::set('mysql_command_tmpsqldir', "/tmp");
MigrationConfig::set('mysql_command_host',      "localhost");
MigrationConfig::set('mysql_command_user',      "user");
MigrationConfig::set('mysql_command_password',  "password");
MigrationConfig::set('mysql_command_database',  "yourdatabase");
MigrationConfig::set('mysql_command_options',   "--default-character-set=utf8");

参考リンク