LoginSignup
14
6

More than 3 years have passed since last update.

Laravel で カラムの型を変更したらエラーが出たので対処法

Last updated at Posted at 2020-01-23

やりたいこと

テーブルのカラムの型を
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
COLLATE
utf8mb4_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();
     });
 }

参考

14
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
6