質問: mysql_query("delimiter //", $dbname); if (!$rs) { print mysql_errno($dbname).":".mysql_error()." \n"; exit(); } として実行すると、 1064:you have an error in your sql syntax; check the manual that corresponds to your mysql server version for the right syntax to use near 'delimiter //' at line 1 というエラーが出てしまいます・・・ おそらくですが設定したと同時にデミリタの「;」が「//」に変わってて デミリタが発見できずにこのようなエラーが出てるのだと推測するのですが、 実際にはどのような現象なのでしょうか?また解決方法もお願いします。
回答: create triggerからend までのsql文だけで発行してください。 最後のデリミッターは入れないこと。入れなくても、送信文の終端で一文終了処理が行われます。 つまり、デリミッターの役割を、mysqli::multi_query が担ってるということです。 コマンドラインでは、まだ入力が続くのか、入力終了して発行したいのかを知るすべは、デリミッターしかありませんが、phpからの発行は、入力完了した文を発行しているという前提で作られています。 逆に言うと、一文にしたいものを2回に分けて発行はできないということです。