CakePHPでDBテーブルのカラム名がMySQL予約語に被りエラー

スポンサーリンク

CakePHP でマイグレーションを実行して、モデル/コントローラー/ビューを作成後に、開発環境で動作確認をしていたところ、以下のエラーに遭遇しました。

— 環境 —
PHP 5.5.19
CakePHP 3.1.1

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

カラム名が MySQL 予約語に被ってたのが原因

どうやら、マイグレーションで作成したDBテーブルのカラム名が、MySQL の予約語と被っていたために発生したエラーらしかった。以下あたりの記事を参考。

mysql – CakePHP 3.0: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax – Stack Overflow
MySQL :: MySQL 5.0 Reference Manual :: 9.3 Keywords and Reserved Words

condition, enable というカラム名を使っていました。なので解決するには、それらのカラム名を使わないように変更するためにマイグレーションをやり直す。

いったん、マイグレーションをロールバック。

ロールバック後、対象のマイグレーションファイルのカラム名を、MySQL 予約語以外の名前に修正して、再びマイグレーションを実行。

同様に、コントローラー、モデル、ビュー(テンプレート)などファイル中で使っていた condition, enable のカラム名を修正しました。

以上の修正で正常に動作するようになった。

スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
 
スポンサーリンク

Leave Your Message!