我创建了一个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”)。
对于此错误的任何解释或帮助,我将不胜感激。即使在迁移中已定义列,也基本上找不到列。
答案 0 :(得分:0)
我找到了从heroku获得的SQLState [42703]的简单解决方案。当您在数据库中有一个表时,heroku假定该表的主键称为“ id”。如果您有一个除此以外的主键(在这种情况下,该主键称为compence_profile_id),则需要在模型中添加一个具有您拥有的主键值的变量。我已经在我的权限配置文件模型中将变量命名为:$ primaryKey ='competence_profile_id';并解决了问题