Я создаю таблицу продуктов в своем приложении Laravel.
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->string('name');
$table->integer('price');
$table->timestamps();
$table->foreign('user_id')
->references('id')
->on('users');
});
}
После этого я пытаюсь перенести свою базу данных
$ php artisan migrate
Однако я получаю эту ошибку при переносе таблицы продуктов:
Exception trace:
1 PDOException::("SQLSTATE[HY000]: General error: 1005 Can't create table `apps`.`#sql-30d4_61` (errno: 150 "Foreign key constraint is incorrectly formed")") C:\xampp\htdocs\LTCRUDAUT\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458
2 PDOStatement::execute() C:\xampp\htdocs\LTCRUDAUT\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458
Как бы я это исправить?
Я думаю, что проблема не в таблице products
, а конкретно в другой миграции apps
. Можете ли вы показать мне код миграции этой таблицы (`приложения'), братан?
@ escbooster12 Я согласен, проблема определенно в другой миграции для таблицы приложений.
Вероятно, это связано с тем, что Laravel теперь использует bigIncrements()
вместо increments()
по умолчанию для поля id в миграции пользовательской таблицы.
Для внешних ключей они должны быть установлены на один и тот же размер поля. Чинить:
{
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->bigInteger('user_id')->unsigned();
$table->string('name');
$table->integer('price');
$table->timestamps();
$table->foreign('user_id')
->references('id')
->on('users');
});
}
Откуда взялось название стола
#sql-30d4_61
? Похоже, эта миграция не вызывает ошибку.