为了账号安全,请及时绑定邮箱和手机立即绑定

SQLSTATE[42000]:语法错误或访问冲突:1072 表中不存在键列“proform_id”

SQLSTATE[42000]:语法错误或访问冲突:1072 表中不存在键列“proform_id”

PHP
浮云间 2023-10-15 16:45:49
php artisan migrate:fresh 之后出现错误:SQLSTATE[42000]:语法错误或访问冲突:1072 表中不存在键列“proform_id”(SQL:alter tableproforms添加约束proforms_proform_id_foreign外键(proform_id)引用proforms(id)删除级联)这是生成错误的迁移:2020_08_08_093303_create_dynamic_field.php<?phpuse 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');    }}
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

这对我来说看起来很奇怪:


Schema::table('proforms', function (Blueprint $table) {

    $table->foreign('proform_id')

          ->references('id')

          ->on('proforms')

          ->onDelete('cascade');            

});

看起来您正在尝试添加一个外键并引用它自己的表。


proform_id桌子上没有proforms。该语句需要在表上运行dynamic_fields。


Schema::table('dynamic_fields', function (Blueprint $table) {

    $table->foreign('proform_id')

          ->references('id')

          ->on('proforms')

          ->onDelete('cascade');            

});


查看完整回答
反对 回复 2023-10-15
?
开满天机

TA贡献1786条经验 获得超13个赞

尝试添加foreignId而不是像这样只添加foreignId:


Schema::table('proforms', function (Blueprint $table){

        $table->foreignId('user_id')

              ->references('id')

              ->on('users')

              ->onDelete('cascade');


查看完整回答
反对 回复 2023-10-15
  • 2 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信