- 更新日: 2016年2月1日
- PHP & CakePHP
CakePHPでDBテーブルのカラム名がMySQL予約語に被りエラー
CakePHP でマイグレーションを実行して、モデル/コントローラー/ビューを作成後に、開発環境で動作確認をしていたところ、以下のエラーに遭遇しました。
1 2 3 |
Syntax error or access violation: 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 'condition... |
— 環境 —
PHP 5.5.19
CakePHP 3.1.1
カラム名が 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 というカラム名を使っていました。なので解決するには、それらのカラム名を使わないように変更するためにマイグレーションをやり直す。
いったん、マイグレーションをロールバック。
1 2 3 |
$ bin/cake migrations rollback |
ロールバック後、対象のマイグレーションファイルのカラム名を、MySQL 予約語以外の名前に修正して、再びマイグレーションを実行。
1 2 3 |
$ bin/cake migrations migrate |
同様に、コントローラー、モデル、ビュー(テンプレート)などファイル中で使っていた condition, enable のカラム名を修正しました。
以上の修正で正常に動作するようになった。
- PHP & CakePHP の関連記事
- PHP+MySQLでNo such file or directoryエラー
- bin/cakeコマンドでintlエラーが出る場合の対処(CakePHP)
- CakePHPアプリケーションをCapistranoでデプロイ
- Integrity constraint violation:Column ‘created’ in order clause is ambiguousエラー/CakePHP
- CakePHPでDB関連テーブルのレコード・データを取得
- CakePHPでカラム属性に別名/エイリアスを付ける仮想フィールド
- CakePHPで日付選択フォームのカスタマイズ
- CakePHP3で現在のコントローラー名・アクション名を取得
- PHPインストールでconfigure: error: freetype.h not foundエラー
- CakePHPでログイン後に元のページにリダイレクトさせる
Leave Your Message!