Я выполняю команду на терминале, получая эту ошибку, чтобы построить таблицу продуктов

Я создаю таблицу продуктов в своем приложении 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

Как бы я это исправить?

Откуда взялось название стола #sql-30d4_61? Похоже, эта миграция не вызывает ошибку.

D. Petrov 09.04.2019 22:45

Я думаю, что проблема не в таблице products, а конкретно в другой миграции apps. Можете ли вы показать мне код миграции этой таблицы (`приложения'), братан?

schutte 09.04.2019 23:31

@ escbooster12 Я согласен, проблема определенно в другой миграции для таблицы приложений.

Casey Anderson 10.04.2019 00:51
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
3
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вероятно, это связано с тем, что 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');
    });
}

Другие вопросы по теме