(Решено) Laravel 6.2: не удалось добавить ограничение внешнего ключа во время миграции - PullRequest
0 голосов
/ 05 февраля 2020

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

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `users` add constraint `users_ent_id_foreign` foreign key (`ent_id`) references `id_ent` (`entreprises`))

Мой код миграции для 'Entreprises'

 public function up()
{
    Schema::create('entreprises', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->increments('id_ent');
        $table->string('name');
        $table->string('numSiret', 14)->unique();
        $table->integer('nbr_couvert')->length(10);
        $table->timestamps();
    });
}

Мой код миграции для 'Users'


    public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->increments('id_user');
        $table->string('log');
        $table->string('name', 45);
        $table->string('firstName', 45);
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->string('num_phone', 20);
        $table->datetime('created_at');
        $table->unsignedInteger('ent_id');
        $table->integer('agenda_id')->nullable();
        $table->tinyInteger('droitUser')->nullable();
        $table->boolean('validateMail');
        $table->string('key', 255);
    });

    Schema::table('users', function ($table) {
        $table->foreign('ent_id')
            ->references('entreprises') //here 
            ->on('id_ent'); //and here
    });

Я изменяю порядок миграций, и таблица 'entreprises' создается перед таблицей 'users'.

I перепробовал все решения от здесь и здесь и им нечего менять.

Есть ли у кого-нибудь предложения?

Редактирование решения

Позор мне ... Я просто делаю глупую ошибку, когда ссылаюсь на таблицу, на которую хотел сослаться ... Теперь все хорошо ... Извините

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020
Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->bigInteger('user_id')->unsigned();
            $table->string('title');
            $table->string('slug')->unique();
            $table->string('image')->default('default.png');
            $table->string('zip');
            $table->text('body');
            $table->integer('view_count')->default(0);
            $table->boolean('status')->default(false);
            $table->boolean('is_approved')->default(false);
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->timestamps();
0 голосов
/ 05 февраля 2020

Вы используете базу данных sqlite? если это так, в базе данных sqlite по умолчанию отключена функция внешнего ключа.

SQLite по умолчанию отключает ограничения внешнего ключа. При использовании SQLite обязательно включите поддержку внешнего ключа в конфигурации базы данных, прежде чем пытаться создать их в своих миграциях.

вы можете отметить здесь , чтобы включить внешний ключ в базе данных sqlite .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...