Я пытаюсь создать comments
таблицу с внешним ключом к users
таблицы со схемой строитель Laravel 4 в, например, так:SQL 1005 ошибка при запуске Laravel 4 миграции
Schema::create('comments', function(Blueprint $table)
{
$table->increments('id');
$table->integer('user_id');
$table->text('body');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users');
});
Но когда я бегу миграция, я получаю следующее сообщение об ошибке:
[Exception]
SQLSTATE[HY000]: General error: 1005 Can't create table 'streamr.#sql-16fc_89' (errno: 150)
(SQL: alter table `comments` add constraint comments_user_id_foreign foreign key (`user_id`) references `users` (`id`)) (Bindings: array())
насколько я могу судить, это происходит потому, что id
столбец users
таблицы int(10)
и $table->integer('user_id')
делает int(11)
, что приводит к сбою внешнего ключа из-за несовместимых типов столбцов. Однако, когда я пытаюсь установить длину целого столбца я создаю это не работает:
$table->integer('user_id', 10);
Есть ли способ обойти это? Кажется странным, что схема строитель Laravel будет строить int(10)
колонки для первичных ключей и не сделать их совместимыми с integer
столбцами:/
Edit: Я также уверен, что таблицы InnoDB, и они.
если вы используете '-> onDelete ('set null');' like '$ table-> foreign ('user_id') -> ссылки ('id') -> on ('users') -> onDelete ('set null'); ', вероятно, необходимо установить значение по умолчанию для столбца: $ table-> unsignedInteger ('user_id') -> nullable();' –