SQLSTATE[42000]:语法错误或访问冲突:1072 table 中不存在键列 'proform_id'
SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'proform_id' doesn't exist in table
在 php artisan migrate:fresh 之后我得到错误:
SQLSTATE[42000]:语法错误或访问冲突:1072 table 中不存在键列 'proform_id'(SQL:更改 table proforms
添加约束 proforms_proform_id_foreign
外键 (proform_id
) 引用 proforms
(id
) 删除级联)
这是生成错误的迁移:
2020_08_08_093303_create_dynamic_field.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateDynamicField extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('dynamic_fields', function (Blueprint $table) {
$table->increments('id');
$table->string('id_pozycji')->nullable();
$table->string('name')->nullable();
$table->string('PKWIU')->nullable();
$table->integer('quantity')->nullable();
$table->integer('unit')->nullable();
$table->integer('netunit')->nullable();
$table->integer('nettotal')->nullable();
$table->integer('VATrate')->nullable();
$table->integer('grossunit')->nullable();
$table->integer('grosstotal')->nullable();
$table->integer('proform_id')->nullable();
$table->timestamps();
$table->time('deleted_at')->nullable();
});
Schema::table('proforms', function (Blueprint $table){
$table->foreign('proform_id')
->references('id')
->on('proforms')
->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('dynamic_fields');
}
}
这是与之相关的迁移:
2020_07_29_101958_proforms.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class Proforms extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('proforms', function (Blueprint $table) {
$table->increments('id');
$table->integer('proformnumber')->nullable();
$table->date('proformdate')->nullable();
$table->date('selldate')->nullable();
$table->integer('user_id')->unsigned()->nullable();
$table->integer('form_id')->unsigned()->nullable();
$table->integer('currency_id')->unsigned()->nullable();
$table->string('paymentmethod')->nullable();
$table->date('paymentdate')->nullable();
$table->string('status')->nullable();
$table->string('comments')->nullable();
$table->string('city')->nullable();
$table->string('autonumber')->nullable();
$table->integer('automonth')->nullable();
$table->integer('autoyear')->nullable();
$table->string('name')->nullable();
$table->string('PKWIU')->nullable();
$table->integer('quantity')->nullable();
$table->integer('unit')->nullable();
$table->integer('netunit')->nullable();
$table->integer('nettotal')->nullable();
$table->integer('VATrate')->nullable();
$table->integer('grossunit')->nullable();
$table->integer('grosstotal')->nullable();
$table->timestamps();
$table->time('deleted_at')->nullable();
});
Schema::table('proforms', function (Blueprint $table){
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
$table->foreign('form_id')
->references('id')
->on('forms')
->onDelete('cascade');
$table->foreign('currency_id')
->references('id')
->on('currencys')
->onDelete('cascade');
});
我觉得这很奇怪:
Schema::table('proforms', function (Blueprint $table) {
$table->foreign('proform_id')
->references('id')
->on('proforms')
->onDelete('cascade');
});
您似乎正在尝试添加外键并引用它自己的外键 table。
proforms
table上没有proform_id
。这个语句需要在运行上dynamic_fields
table.
Schema::table('dynamic_fields', function (Blueprint $table) {
$table->foreign('proform_id')
->references('id')
->on('proforms')
->onDelete('cascade');
});
在 php artisan migrate:fresh 之后我得到错误:
SQLSTATE[42000]:语法错误或访问冲突:1072 table 中不存在键列 'proform_id'(SQL:更改 table proforms
添加约束 proforms_proform_id_foreign
外键 (proform_id
) 引用 proforms
(id
) 删除级联)
这是生成错误的迁移: 2020_08_08_093303_create_dynamic_field.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateDynamicField extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('dynamic_fields', function (Blueprint $table) {
$table->increments('id');
$table->string('id_pozycji')->nullable();
$table->string('name')->nullable();
$table->string('PKWIU')->nullable();
$table->integer('quantity')->nullable();
$table->integer('unit')->nullable();
$table->integer('netunit')->nullable();
$table->integer('nettotal')->nullable();
$table->integer('VATrate')->nullable();
$table->integer('grossunit')->nullable();
$table->integer('grosstotal')->nullable();
$table->integer('proform_id')->nullable();
$table->timestamps();
$table->time('deleted_at')->nullable();
});
Schema::table('proforms', function (Blueprint $table){
$table->foreign('proform_id')
->references('id')
->on('proforms')
->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('dynamic_fields');
}
}
这是与之相关的迁移: 2020_07_29_101958_proforms.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class Proforms extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('proforms', function (Blueprint $table) {
$table->increments('id');
$table->integer('proformnumber')->nullable();
$table->date('proformdate')->nullable();
$table->date('selldate')->nullable();
$table->integer('user_id')->unsigned()->nullable();
$table->integer('form_id')->unsigned()->nullable();
$table->integer('currency_id')->unsigned()->nullable();
$table->string('paymentmethod')->nullable();
$table->date('paymentdate')->nullable();
$table->string('status')->nullable();
$table->string('comments')->nullable();
$table->string('city')->nullable();
$table->string('autonumber')->nullable();
$table->integer('automonth')->nullable();
$table->integer('autoyear')->nullable();
$table->string('name')->nullable();
$table->string('PKWIU')->nullable();
$table->integer('quantity')->nullable();
$table->integer('unit')->nullable();
$table->integer('netunit')->nullable();
$table->integer('nettotal')->nullable();
$table->integer('VATrate')->nullable();
$table->integer('grossunit')->nullable();
$table->integer('grosstotal')->nullable();
$table->timestamps();
$table->time('deleted_at')->nullable();
});
Schema::table('proforms', function (Blueprint $table){
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
$table->foreign('form_id')
->references('id')
->on('forms')
->onDelete('cascade');
$table->foreign('currency_id')
->references('id')
->on('currencys')
->onDelete('cascade');
});
我觉得这很奇怪:
Schema::table('proforms', function (Blueprint $table) {
$table->foreign('proform_id')
->references('id')
->on('proforms')
->onDelete('cascade');
});
您似乎正在尝试添加外键并引用它自己的外键 table。
proforms
table上没有proform_id
。这个语句需要在运行上dynamic_fields
table.
Schema::table('dynamic_fields', function (Blueprint $table) {
$table->foreign('proform_id')
->references('id')
->on('proforms')
->onDelete('cascade');
});