やりたいこと
テーブルのカラムの型を
string(varchar)
からintgerにしたい
公式に従いdoctrine/dbal
を入れる
変えるテーブルを指定し、対象カラムを変更しchange()
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->unsignedInteger('hoge')->length(7)->nullable(true)->default(null)->change();
});
}
しかしmigrateすると下記エラーが
SQLSTATE[42000]: 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 'CHARACTER SET utf8mb4 DEFAULT NULL
COLLATEutf8mb4_unicode_ci
対処法
doctrine/dbal
の最新である2.10
で追加されたバグが原因らしい
v.2.9.3
にすると治りました
composer require doctrine/dbal:2.9.3
php artisan migrate
追記
githubのissueを見ていると回避策として->charset(null)
を指定すると良いと有りました。
試してはいませんが下記のようにすると2.10.0でも動作すると有りました。
詳しくはissueを参考にしお試しください
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->unsignedInteger('hoge')->length(7)->nullable(true)->default(null)->charset(null)->change();
});
}