大嵌り、Create Table
物凄く嵌った。
時間というより、精神的ダメージが大きい。
何をしたかというとCreate Tableである。
ローカル環境でテストして動いていた。
SQL文自体は、MySQLAdminでエクスポートしたものだから間違いはない。
これがいけなかった。
サーバに入れてテストすると、何と動かない。
それだけでは流石に焦らない。
MySQLAdminのSQL実行で試した。
エラーが出れば良い。
が、エラーにならない。
ここで盛大に焦る。
もしかしてエスケープかとも思ったが、エスケープしてみて(mysql_escape_string使用)も動かない。
かなり絶望感が沸いてくる。
SQL文は正しく、ローカルでは動いたから間違いはないという先入観(というか事実だが)が、他にエラーの可能性があるという考えを持たせてくれなくなるのである。
サーバのせいだろう、権限か、などいらぬことばかりが頭を駆け巡る。
こういう時に便利なのがこれである。
echo mysql_error();
MySQLAdminのSQL実行でエラーが出ないのに、エラーになっているのだから、これしかない。
このmysql_error()は、直前の実行されたエラーについて返してくれるスグレモノなのだ。
見ると訳の分からないエラーが出ている。
内容は普通に文法エラーなのだが、文法エラーなどあるはずがない。
ローカルで動いているMySQLAdminが作ったSQL文なのだから。
だが、エラーだというのだから仕方がない。
と、先入観というのは恐ろしいものである。
エラーだという箇所で、一番怪しいのは、文法的に間違いではなく、ふたつのクエリを連続して記述している点である。
ローカルでは動いていたのだが・・・
もしかしたら、2つはダメなのか。
分けて、ひとつづつテーブルを作るようにすると・・・
動いた・・・
MySQLAdminでは動くのに、ローカルでは動くのに、何と理不尽なことだろうか。
MySQLのバージョン違いによる差だとしか考えられない。
MySQLのバージョンを知る手っ取り早い方法は次のクエリ実行である。
select version();
ローカルが、5.0.51b-community
サーバが、5.0.45-log
微妙に違うだけだが、それこそ微妙に違うのもまた事実である。
分かり辛かった・・・