Как решить эту проблему миграции базы данных? - PullRequest
0 голосов
/ 09 февраля 2019

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

Освещение \ Database \ QueryException: SQLSTATE [42000]: синтаксическая ошибка или доступнарушение: 1064 У вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования рядом с ') каскадом удаления при каскаде обновлений' в строке 1 (SQL: изменить таблицу education_qualifications добавить ограничение education_qualifications_teacher_id_foreign ссылки на внешний ключ (teacher_id)teachers () при удалении каскада при обновлении каскада) в E: \ XAMPP \ htdocs \ ViduresaApp \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php: 664

    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

Трассировка исключений:

1 PDOException: :( "SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MariaDBправильный синтаксис для использования рядом с ') на каскаде удаления на каскаде обновлений' в строке 1 ") E: \ XAMPP \ htdocs \ ViduresaApp \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php: 452

2 PDO :: prepare ("изменить таблицу education_qualifications добавить ограничение education_qualifications_teacher_id_foreign ссылки на внешний ключ (teacher_id) teachers () при каскаде удаления при обновлении каскада") E: \ XAMPP \ htdocs \ ViduresaApp \поставщик \ Laravel \ рамки \ SRC \ Illuminate \ Database \ Connection.php: 452

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateEducationQualificationsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {

        Schema::create('education_qualifications', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedInteger('teacher_id')->nullable();
            $table->unsignedInteger('student_id')->nullable();
            $table->string('institute_name');
            $table->string('user_degree');
            $table->string('field_of_study');
            $table->string('user_grade');
            $table->date('from_date')->nullable();
            $table->date('to_date')->nullable();
            $table->text('edu_description');
            $table->timestamps();

            $table->foreign('teacher_id')->references('id')->on('teachers')->onUpdate('cascade')->onDelete('cascade');
            $table->foreign('student_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');

            $table->primary(['teacher_id', 'student_id']);

        });

    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('education_qualifications');
    }
}

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете использовать как onupdate, так и ondelete в одной строке

Например:

$table->foreign(’author’)->references(’id’)->on(’users’)->onUpdate(’cascade’);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...