插入记录时的语法错误或访问冲突

时间:2019-07-10 09:00:58

标签: sql laravel

我遇到以下错误:

  

SQLSTATE [42000]:语法错误或访问冲突:1067无效   'id'的默认值(SQL:创建表advertisingid bigint   unsigned not null默认为'None'auto_increment主键slug   varchar(50)在id之后整理'utf8_unicode_ci'不为null,   provider_name varchar(100)整理'utf8_unicode_ci'null,   tracking_code_large文本整理为'utf8_unicode_ci'null,   tracking_code_medium文本整理为'utf8_unicode_ci'null,   tracking_code_small文本整理为'utf8_unicode_ci'null,active   tinyint unsigned null默认值'1')默认字符集utf8归类   'utf8_unicode_ci')

这是我的代码:

public function up()
    {
        Schema::create('advertising',function(Blueprint $table){
            $table->bigIncrements('id')->unsigned()->default('None')->nullable($value = false)->autoIncrement();
            $table->string('slug',50)->after('id')->collation('utf8_unicode_ci')->nullable($value = false);
            $table->string('provider_name',100)->collation('utf8_unicode_ci')->default(null)->nullable($value = true);
            $table->text('tracking_code_large')->collation('utf8_unicode_ci')->default(null)->nullable($value = true);
            $table->text('tracking_code_medium')->collation('utf8_unicode_ci')->default(null)->nullable($value = true);
            $table->text('tracking_code_small')->collation('utf8_unicode_ci')->default(null)->nullable($value = true);
            $table->tinyInteger('active')->unsigned()->nullable($value = true)->default(1);
        });
    }

我尝试更改id的值,但仍然会出错。

1 个答案:

答案 0 :(得分:1)

您不能为自动递增的列设置默认值,我也不明白为什么您希望该值可以为空。

更改此:

$table->bigIncrements('id')->unsigned()->default('None')->nullable($value = false)->autoIncrement();

要这样:

$table->bigIncrements('id');

bigIncrements已经意味着自动递增且未签名。