что значит sqlstate [42703] на героку? - PullRequest
0 голосов
/ 22 февраля 2019

Я создал приложение laravel, и все работает как надо на моем локальном хосте.Я использую XAMPP и PHPMyAdmin для локального тестирования приложения, и когда я загрузил его в Heroku, настроил базу данных и запустил «heroku run php artisan migrate» до сих пор без ошибок.

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

  public function up()
  {
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('lastname');
        $table->string('username')->uniqe();
        $table->string('ssn');
        $table->string('lastfour');
        $table->unique(array('ssn','lastfour'));
        $table->string('email')->unique();
        $table->string('role')->default('Applicant');
        $table  ->foreign('role')
                ->references('name')
                ->on('role');
        $table->date('applicationDate');
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->boolean('application_result')->nullable();
        $table->rememberToken();
        $table->timestamps();
    });
}

и миграция компетенции

public function up()
{
    Schema::create('competence_profile', function (Blueprint $table) {
        $table->increments('competence_profile_id');
        $table->unsignedInteger('person_id');
        $table  ->foreign('person_id')
                ->references('id')
                ->on('users');

        $table->String('competence');
        $table  ->foreign('competence')
                ->references('name')
                ->on('competence');
        $table->integer('years_of_experience');
        $table->timestamps();
    });
}

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

SQLSTATE [42703]: неопределенный столбец: 7 ОШИБКА: столбец "id" не существует LINE 1: ... t "," made_at ")значения ($ 1, $ 2, $ 3, $ 4, $ 5), возвращающие «id» ^ (SQL: вставить в значения «qualce_profile» («person_id», «компетенция», «years_of_experience», «updated_at», «made_at») (4,Designer, 6, 2019-02-22 11:36:29, 2019-02-22 11:36:29) возвращая "id").

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

1 Ответ

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

Я нашел простое решение для SQLState [42703], которое вы получаете от heroku.Когда у вас есть таблица в базе данных, heroku предполагает, что первичный ключ для этой таблицы называется 'id'.Если у вас есть первичный ключ, который называется отличным от этого (в данном случае первичный ключ называется компетенция_профайл_ид), вам необходимо добавить переменную в модель со значением имеющегося у вас первичного ключа.Я назвал эту переменную в моей модели компетенции следующим образом: $ primaryKey = 'компетенция_профайл_ид';и это решило проблему

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