Как исправить ошибку «не удается добавить ограничение внешнего ключа», используя uuid вместо увеличения первичного ключа - PullRequest
0 голосов
/ 14 мая 2019

РЕДАКТИРОВАТЬ : Решено, я забыл скобки на ->primary() в поле uuid.

Я пытаюсь переключить свое приложение с увеличения идентификатора на uuid. На данный момент я только переключился на uuid на моем create_users_table. Первая таблица с внешним ключом, указывающим на мою таблицу пользователей: create_groups_table Когда я пытаюсь запустить миграцию, мое ограничение внешнего ключа не выполняется.

Я пробовал разные значения для внешнего ключа, но безрезультатно.

Вот соответствующий код.

create_users_table:

    Schema::create('users', function (Blueprint $table) {
        $table->uuid('id')->primary;
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamps();
    });

create_groups_table:

    Schema::create('groups', function (Blueprint $table) {
        $table->uuid('id')->primary();
        $table->string('title');
        $table->uuid('user_id')->nullable();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->timestamps();
    });

Я ожидаю, что миграция запустится, но я получаю:

Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `groups` add constraint `groups_user_id_foreign` foreign key (`user_id`) references `users` (`id`) on delete cascade)

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 15 мая 2019

Я забыл скобки на ->primary() в поле uuid:

   Schema::create('users', function (Blueprint $table) {
        $table->uuid('id')->primary();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamps();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...