Laravelでphp artisan migrateをかけると下記のエラーになってしまいます。
調べたところキーの型が違うようなので色々と試してみたのですが解決できません。
ご教授頂けますと幸いです。
(laravel初心者です)
migrateはfreshしてやり直したりキャッシュを消したりもしています。
[エラー内容]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: create table photos
(id
varchar(255) not null, user_id
int unsigned not null, filename
varchar(255) not null, created_at
timestamp null, updated_at
timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')
[環境]
mac
PHP 7.4.10
Laravel Framework 6.18.40
[ソースコード]
users_tableはlaravelの標準を使っています。
users
1public function up() 2 { 3 Schema::create('users', function (Blueprint $table) { 4 $table->bigIncrements('id'); 5 $table->string('name'); 6 $table->string('email')->unique(); 7 $table->timestamp('email_verified_at')->nullable(); 8 $table->string('password'); 9 $table->rememberToken(); 10 $table->timestamps(); 11 }); 12 }
今回エラーが起きるphotos_tableがこちらです。
photos
1Schema::create('photos', function (Blueprint $table) { 2 $table->string('id')->primary(); 3 $table->unsignedInteger('user_id'); 4 $table->string('filename'); 5 $table->timestamps(); 6 7 $table->foreign('user_id')->references('id')->on('users'); 8 9 });
[試したこと]
①photos_tableを下記に変更
$table->bigIncrements('user_id');
(usersと合わせる)
または
$table->integer('user_id')->unsigned();
②users_tableを下記に変更
$table->bigInteger('id');
(photosに合わせる)
または
$table->string('id')->unique();に変更
③頭にbigがある状態と無い状態とで試したみた
④調べる内に$table->engine = 'InnoDB';が必要との記事も見つけたのでやってみた
どれも同じエラーになり解決できません。
2020.10.1追加
phepr.kさんの回答より変更してやったこと
$table->unsignedInteger('user_id');を
$table->unsignedBigInteger('user_id');に変更。
php artisan migrate:refresh
php artisan migrate:fresh
を行う。
回答2件
あなたの回答
tips
プレビュー