Ошибка внешней маскировки Laravel

Laravel 5.6 работает на: PHP 7.2, MariaDB 10.3

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

В других таблицах все идентификационные переменные, определенные самим Laravel и автоматически увеличивающиеся без знака

Итак, моя миграция такова:

public function up()
{

    Schema::create('user_roles', function (Blueprint $table) {
        $table->increments('id');
        $table->unsignedInteger('role_id');
        $table->unsignedInteger('user_id');

        $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    });
}

Ошибка выглядит так :

SQLSTATE [42000]: Синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса для использования около ') для удаления cascade' в lin e 1 (SQL: alter table user_rolesadd constraint user_roles_role_id_foreignexternal key ( role_id) ссылки roles() для удаления каскада)

Ошибки, брошенные Ларавелем :

1 PDOException: :( "SQLSTATE [42000]: ошибка синтаксиса или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса для использования рядом с) для удаления cascade ' в строке 1 ") C: xampp htdocs order-project vendor laravel framework src Illuminate Database Connection.php: 452

2 PDO :: prepare ("alter table user_rolesadd constraint external user_roles_role_id_foreignkey ( role_id) reference roles() on delete cascade") C: xampp htdocs order-project vendor laravel framework src Illuminate Database Connection.php: 452

php,laravel,laravel-5,

1

Ответов: 3


0

попробуй это

$table->integer('role_id')->unsigned();
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

0

Я думаю, что у вас есть аналогичная проблема с этим сообщением. Внешний ключ Laravel onDelete ('cascade') не работает

Надеюсь, это поможет


0 принят

Я решил проблему. Это не удается из-за того, что Laravel пытается перенести таблицу user_roles перед таблицей ролей. Я просто переношу таблицу ролей перед таблицей user_roles, и она работает! Перед тем, как таблица правил решения не выдает ошибку, но она не полностью создана.

php, laravel, laravel-5,
Похожие вопросы