大嵌り、Create Table

Posted by Koumei on 7月 31, 2010 in webプログラミング |

 物凄く嵌った。
 時間というより、精神的ダメージが大きい。

 何をしたかというと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
 微妙に違うだけだが、それこそ微妙に違うのもまた事実である。

 分かり辛かった・・・

コメントをどうぞ

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

*

Copyright © 2009-2010 Koumei Soft 開発ログ All rights reserved.
Desk Mess Mirrored v1.6 theme from BuyNowShop.com.