I am getting the error (“SQLSTATE[HY000]: General error: 1005 Can’t create table (errno: 121 “Duplicate key on write or update”)”) on my Laravel project i have three migrations which are following
users migration
Schema::create('users', function (Blueprint $table) { //$table->increments('id'); $table->string('name'); $table->string('email')->primary(); $table->string('mobile'); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->string('role'); $table->string('plan'); $table->string('job_portal_role')->nullable(); $table->boolean('status'); $table->rememberToken(); $table->timestamps(); });
business_profiles migration
Schema::create('business_profiles', function (Blueprint $table) { $table->id(); $table->string('user_id'); $table->foreign('user_id',70)->references('email')->on('users'); $table->string('name',50); $table->string('mobile',50); $table->string('business_name',100); $table->string('business_email',100); $table->string('business_phone',100); $table->text('business_description'); $table->string('business_category',100); $table->string('country',100); $table->string('state',100); $table->string('city',100); $table->string('website',100); $table->string('facebook',100); $table->string('whatsapp',100); $table->string('instagram',100); $table->string('youtube',100); $table->boolean('status'); $table->timestamps(); });
ads migration
Schema::create('ads', function (Blueprint $table) { $table->id('ad_id'); $table->string('ad_user_id'); $table->foreign('ad_user_id',100)->references('email')->on('users'); $table->string('title'); $table->string('ad_details'); $table->string('picture1'); $table->string('picture2'); $table->string('picture3'); $table->string('picture4'); $table->string('picture5'); $table->string('category'); $table->string('email'); $table->string('mobile'); $table->string('website'); $table->boolean('status'); $table->string('ad_type'); $table->timestamps(); });
When I try to run migration command on terminal of my visual studio code it shows me following error.
(“SQLSTATE[HY000]: General error: 1005 Can’t create table (errno: 121 “Duplicate key on write or update”)”)
Solution
You are using wrong syntax in ads migration file so following is the correct syntax and when you are making reference you should not define the character limit you can specify this limit into your column.
Schema::create('ads', function (Blueprint $table) { $table->id('ad_id'); $table->string('ad_user_id',100); $table->foreign('ad_user_id')->references('email')->on('users'); $table->string('title'); $table->string('ad_details'); $table->string('picture1'); $table->string('picture2'); $table->string('picture3'); $table->string('picture4'); $table->string('picture5'); $table->string('category'); $table->string('email'); $table->string('mobile'); $table->string('website'); $table->boolean('status'); $table->string('ad_type'); $table->timestamps(); });