- 更新日: 2016年2月2日
- MySQL & DB
MySQLでBLOB/TEXT型のカラムにはデフォルト値を設定できない
スポンサーリンク
CakePHP 3 開発のマイグレーションで、MySQL データベースの TEXT 型のカラムにデフォルト値を設定しようとして遭遇したエラー。
1 2 3 |
BLOB/TEXT column 'description' can't have a default value |
— 環境 —
PHP 5.5.19
CakePHP 3.1.1
MySQL 5.6.19
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
MySQLはBLOB/TEXT型のカラムにデフォルト値を設定できない
CakePHP の bin/cake bake コマンドを使って…
1 2 3 |
$ bin/cake bake migration CreateProducts description:text ... |
のように、マイグレーション用ファイルを生成したところ、以下のファイルが生成された。
config/Migrations/*****_create_products.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php use Migrations\AbstractMigration; class CreateProducts extends AbstractMigration { /** * Change Method. * * More information on this method is available here: * http://docs.phinx.org/en/latest/migrations.html#the-change-method * @return void */ public function change() { $table = $this->table('products'); // ... $table->addColumn('description', 'text', [ 'default' => '', 'null' => false, ]); // ... } } |
これをそのままマイグレーションを実行してみましたら…
1 |
$ bin/cake migrations migrate |
以下のエラーメッセージが表示されてマイグレーションが失敗。
1 2 3 |
Syntax error or access violation: 1101 BLOB/TEXT column 'description' can't have a default value |
デフォルト値(’default’ => ”)の指定を削除
どうやら MySQL の仕様で、データ型が BLOB または TEXT 型のカラムにはデフォルト値を設定することができないらしい。
なので、該当部分を以下のように修正してマイグレートやり直し。
config/Migrations/*****_create_products.php
1 |
$table->addColumn('description', 'text'); |
マイグレートを再び実行。
1 2 3 |
$ bin/cake migrations migrate |
これで、無事にマイグレーションが成功した。
“bin/cake bake migration” コマンドで自動生成されたマイグレーションファイルを使うときは、ちょっと注意が必要ですね。
スポンサーリンク
現場で使えるMySQLは長くお世話になっていて、MySQL触る人には必須の本。
<< 前の記事 : SQLite3でDBテーブルをdumpバックアップ
- MySQL & DB の関連記事
- SQLite3でDBテーブルをdumpバックアップ
- Warning: mysql_connect() PHPからMySQL接続でsocketエラー
- phpMyAdminでMySQLをバックアップ(エクスポート)
- MySQLが起動しないエラー(The server quit without updating PID file)
- phpMyAdminで#2002 Cannot log in to the MySQL serverエラー
- libaio.so.1, openssl-devel がなくて mysql-server, mysql-devel をインストールできないエラー
- MySQLオプション(/etc/my.cnf)の設定例
- my.cnf の innodb_data_file_path, innodb_log_file_size 設定で MySQL が起動しなくなる場合の対処
- my.cnfで設定するMySQLオプションで重要そうなのまとめ
- MySQLのソケット場所変更、my.cnfでのsocket設定の注意点
Leave Your Message!