Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Пытаюсь создать таблицы с использование класса Schema и связать их через внешний ключ. Подскажите где я ошибся.
Schema::create('users', function($table){
$table->increments('iduser');
$table->string('nick');
$table->string('fio')->unique();
$table->integer('uid')->unsigned();
$table->text('descr');
$table->timestamps();
});
Schema::create('systems', function($table){
$table->increments('idsystem');
$table->integer('uid');
$table->integer('iduser');
$table->text('descr');
$table->timestamps();
$table->foreign('iduser')->references('iduser')->on('users');
});
Message:
SQLSTATE[HY000]: General error: 1005 Can't create table 'laraveltutorial.#sql-f3c_27' (errno: 150)
SQL: ALTER TABLE `systems` ADD CONSTRAINT systems_iduser_foreign FOREIGN KEY (`iduser`) REFERENCES `users` (`iduser`)
Bindings: array (
)
Не в сети
Не в сети
От себя еще добавлю. Внешние ключи в MySQL (InnoDB) используются для обеспечения целостности данных. Сами же связи контролируютя моделью. Поэтому я бы посоветовал сначала определить связи в приложении, а потом, если необходимо, закрепить эти связи в базе (если используется InnoDB).
По поводу ошибки - скорее всего, у вас не достаточно определен $table->integer('iduser'), попробуйте дать ему свойства unsigned NOT NULL.
Изменено oleg578 (10.09.2012 12:27:28)
Не в сети
Спасибо за советы.
Не в сети
Страницы 1