2014-09-04 3 views
0

Я использую Laravel схемы строитель и вот мой код ...MySQL SQLSTATE [23000] ошибка Laravel

//create links table 
    Schema::create('links', function($table){ 
     $table->increments('id'); 
     $table->unsignedInteger('user_id'); 
     $table->unsignedInteger('domain_id'); 
     $table->string('url'); 
     $table->softDeletes(); 
     $table->timestamps(); 
    }); 
    Schema::table('links', function($table) { 
     $table->index('user_id'); 
     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade'); 
     $table->index('domain_id'); 
     $table->foreign('domain_id')->references('id')->on('domains')->onDelete('cascade')->onUpdate('cascade'); 
    }); 
} 

Но я пытаюсь сохранить что-то к этой таблице она бросает следующие ошибки ...

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`we`.`links`, CONSTRAINT `links_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) (SQL: insert into `links` (`updated_at`, `created_at`) values (2014-09-04 17:35:53, 2014-09-04 17:35:53)) 

Пожалуйста, предложите, если вам нужно что-нибудь еще, чтобы понять это лучше, помогите мне исправить это.

благодаря

ответ

1

Если оператор SQL, чтобы поверить где вставив приложения только временные метки полей (updated_at, created_at). Вам нужно как минимум указать существующий user_id для запроса. Если есть случаи, когда вы можете вставлять в links, не связывая пользователя, вам необходимо обновить таблицу ссылок, чтобы links.user_id допускал нулевые значения. Вы не можете обновить столбец в существующей таблице, чтобы принимать значения null через диспетчера схем, вам нужно сделать это с помощью ручного запроса.

+0

Его фактически не удается при обновлении. – seoppc

+0

Я предполагаю, что какая-то часть процесса генерирует указанный SQL-запрос, который включен в вашу ошибку: «Вставить в значения' links' ('updated_at',' created_at') (2014-09-04 17:35: 53, 2014-09-04 17:35:53) ». Как выглядит трассировка стека в laravel.log? – stakolee

+0

'1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (' we'''links', CONSTRAINT 'links_user_id_foreign' FOREIGN KEY (' user_id') ССЫЛКИ 'users' (' id') ON DELETE CASCADE ON UPDATE CASCADE) (SQL: insert в значения 'links' (' updated_at', 'created_at') (2014-09-04 19:12:57, 2014-09-04 19:12:57))' – seoppc

Смежные вопросы