Освещение \ База данных \ QueryException: SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь перенести таблицы, созданные в laravel, в базу данных и использовать внешний ключ.Но я получаю следующую ошибку.Пожалуйста, помогите мне, где ошибка?

Подсветка \ База данных \ QueryException: SQLSTATE [42000]: Синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования рядом с ')' в строке 1 (SQL: изменить таблицу publications добавить ограничение publications_user_id_for eign ссылки на внешний ключ (user_id) registrations ())

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

  1. PDOException: :( "SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 У вас возникла ошибкав синтаксисе SQL проверьте руководство, соответствующее вашей версии сервера Ma riaDB, чтобы узнать правильный синтаксис для использования рядом с ')' в строке 1 ") C: \ xampp \ htdocs \ plearning \ vendor \ laravel \ framework \ src \ Illuminate \База данных \ Connection.php: 452

  2. PDO :: prepare («изменить таблицу publications добавить ограничение publications_user _id_foreign ссылки на внешний ключ (user_id) registrations ()»)C: \ xampp \ htdocs \ plearning \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php: 452

Пожалуйста, используйте аргумент -v, чтобы увидеть большедетали.

Родительская таблица является регистрационной, и ее код указан ниже.

 <?php

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

class CreateRegistrationsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('registrations', function (Blueprint $table) {
            $table->increments('id'); //primary key
            $table->string('tname');
            $table->string('fname');
            $table->string('domicile');
            $table->integer('nic');
            $table->integer('phone');
            $table->string('email');
            $table->string('off_email');
            $table->string('password');

            $table->timestamps();
        });
    }

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

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

    <?php

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

class CreateEducationsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('educations', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->foreign('user_id')->refrences('id')->on('registrations');
            $table->string('degree');
            $table->string('univ');
            $table->string('country');
            $table->integer('year');
            $table->text('research_area');
            $table->timestamps();
        });
    }

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

И третья таблица, в которой я использую также внешний ключ, в качестве первичного ключа таблицы regstration, - публикации и еекод приведен ниже.

    <?php

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

class CreatePublicationsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('publications', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->foreign('user_id')->refrences('id')->on('registrations');
            $table->string('title');
            $table->string('status');
            $table->integer('year');
            $table->timestamps();
        });
    }

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

Ошибка, над которой я уже вставил.но таблица публикации переносится в базу данных, а две другие таблицы регистрации и обучения не переносятся.

1 Ответ

0 голосов
/ 09 октября 2018

Я вижу, что вы неправильно написали слово references в своих миграциях, можете ли вы обновить его до всех ваших миграций:

...->references('...')...

Если это не решит проблему, тогда ваша проблема в порядке выполнения миграций, это означает, что ваш порядок файлов имеет значение при запуске миграций

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