sqlstate [42703]对heroku意味着什么?

时间:2019-02-22 11:53:08

标签: php mysql laravel heroku

我创建了一个laravel应用,一切都在本地主机上正常运行。我正在使用XAMPP和PHPMyAdmin在本地测试应用程序,当我将其上传到Heroku并配置数据库并运行“ heroku run php artisan migration”时,到目前为止没有错误。

我的应用程序是一种简单的形式,用户在其中注册信息并将其存储在数据库中。数据库由一些表组成。这是用户表的迁移

  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”不存在   第1行:... t“,” created_at“)值($ 1,$ 2,$ 3,$ 4,$ 5)返回   “ id” ^(SQL:插入到“ competence_profile”(“ person_id”,   “能力”,“经验年限”,“更新日期”,“创建日期”)   值(4,Designer,6,2019-02-22 11:36:29,2019-02-22 11:36:29)   返回“ id”)。

对于此错误的任何解释或帮助,我将不胜感激。即使在迁移中已定义列,也基本上找不到列。

1 个答案:

答案 0 :(得分:0)

我找到了从heroku获得的SQLState [42703]的简单解决方案。当您在数据库中有一个表时,heroku假定该表的主键称为“ id”。如果您有一个除此以外的主键(在这种情况下,该主键称为compence_profile_id),则需要在模型中添加一个具有您拥有的主键值的变量。我已经在我的权限配置文件模型中将变量命名为:$ primaryKey ='competence_profile_id';并解决了问题