回滚mysql表,然后再次迁移会在保存数据时出现问题吗?

问题描述 投票:0回答:1

下面的代码曾经可以正常工作,但是回滚表然后再次迁移后,我遇到以下错误,我没有对代码做任何更改!。有人遇到过这个问题:

(2/2) QueryException
SQLSTATE[HY000]: General error: 1364 Field 'tier_level' doesn't have a default value (SQL: insert into `members` (`ffn`, `title`, `fname`, `mname`, `lname`, `dob`, `nat`, `gender`, `email`, `confemail`, `address`, `city`, `country`, `postcode`, `pobox`, `phone1`, `phone2`, `updated_at`, `created_at`) values (5675675, Mr, john, smith, adam, 1970-01-01, UK, Male, 11, 11, 123, 1111, UK, 222, 333, 123456789, 987654321, 2020-01-26 18:54:53, 2020-01-26 18:54:53))

控制器

public function addContact(Request $request) {
    if ($request->isMethod('post')) {
        $temp1 = 'Temporary';
        $temp2 = 10;
        $newMember = new Member();
        $newMember->title=$request->input('title');
        $newMember->tier_level=$temp1;
        $newMember->fname=$request->input('fname');
        $newMember->mname=$request->input('mname');
        $newMember->lname=$request->input('lname');
        $newMember->dob=$request->input('dob');
        $newMember->nat=$request->input('nat');
        $newMember->gender=$request->input('gender');
        $newMember->email=$request->input('email');
        $newMember->confemail=$request->input('confemail');
        $newMember->address=$request->input('address');
        $newMember->city=$request->input('city');
        $newMember->country=$request->input('country');
        $newMember->postcode=$request->input('postcode');
        $newMember->pobox=$request->input('pobox');
        $newMember->phone1=$request->input('phone1');
        $newMember->phone2=$request->input('phone2');
        $newMember->earned_miles=$temp2;

        $newMember->save();
    }
    return view('add');
}

迁移文件

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateMembersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
        Schema::create('members', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->string('tier_level');
            $table->string('ffn');
            $table->string('fname');
            $table->string('mname');
            $table->string('lname');
            $table->date('dob');
            $table->string('nat');
            $table->string('gender');
            $table->string('email');
            $table->string('confemail');
            $table->string('address');
            $table->string('city');
            $table->string('country');
            $table->string('postcode');
            $table->string('pobox');
            $table->string('phone1');
            $table->string('phone2');
            $table->integer('earned_miles');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */

    public function down()
    {
      //
      Schema::dropIfExists('members');
    }
}

以上是我的迁移文件,我已回滚并添加tier_level字段,然后再次迁移。这就是我所做的。

php mysql laravel rollback migrate
1个回答
0
投票

很难从有限的代码中进行猜测,但是我的猜测是您的模型有问题。

  • 您的错误报告它正在尝试插入ffn(INSERT语句的第一个字段),但是您没有在addContact函数中填充它,因此必须在其他位置进行设置。
  • 然后,我想到您在addContact中添加的代码是not实际正在执行并导致您的错误的代码。因此,首先要检查的是您的模型
  • 检查代码库中的其他位置,以查看是否在某处设置了ffn,以及是否未引用tier_level

这应该将您带到至少看起来正确的区域。

© www.soinside.com 2019 - 2024. All rights reserved.