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");