バージョンアップ」タグアーカイブ

MySQLバージョンアップについて

とある事情でMySQLを4.0.26から5.1.4にバージョンアップするこになったのですが、問題が山積みでこまっています。
同じMySQLだから、互換性はあるだろうとたかをくくっていいたので、出鼻をくじかれっぱなし。

その中の一つを紹介します。
MySQL4.0.26に格納されいるデータを移行しようとしたのですが、エラーが出てどうしても挿入できないということでした。
エラー内容は、Field ‘%s’ doesn’t have a default value というようなエラーで、ググッてみるとすぐに解答は見つかりました。
ただ、根本的な解決になるかは不明ですが。
my.iniの【sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”】という項目をコメントアウトすることで解消。

他にも、MySQL5.1系は日付のチェックをしてくれる親切設計なのですが、既存データには2007-02-29などのありえない日付が格納されている。これも丁寧にエラーとしてはじかれます。
ただ、ユーザ側でMySQLのエラーを表示するわけにもいかないので、事前にPHP側で日付の整合性をとることにして解決。

それにしても、速度的には4.0.26のほうが快速だと個人的には思うのですが、テーブル毎のファイル分割をしたいがために、こんなに手間になるなんて。

とある、メーリングリストに4.0.26、4.1系、5.1系の中でどれか軽快で速度が速いですがという質問をしたのですが、「最新版にしなさい」と言われorz
質問に対しての答えではない。
今後のこともあるので、最新版をチョイスして開発をすることに。

あー、バージョンアップなんてめんどくさいって思うことで、SEやってるんだなって実感を覚えました。

MySQLバージョンアップの際の注意 予約語

とあるシステムでMysqlのバージョンをあげることになりました。
現在のバージョンは4.0.26で5.0.45に。
とりあえずシステム的に大きな修正はないはずと踏んでいたのですが、いきなりつまずいてしまいました。

まず、MySQLには予約語というものが存在しています。
この予約語はカラム名や変数に割り当ててはいけません。
しかも、この予約語はバージョンごとに違うのです。
今回問題になったのが、カラム名として使っていた[condition]という文字列。

4.0.26では予約語ではなかったので、問題なかったのですが、5.0.45ではしっかりと予約語として登録されていました。

なんだか不安な展開orz

< Mysql4.1系の予約語 >
< Mysql5.1系の予約語 >