【问题标题】:Syntax error or access violation when inserting a record插入记录时出现语法错误或访问冲突
【发布时间】:2019-11-19 20:52:30
【问题描述】:

我收到以下错误:

SQLSTATE[42000]:语法错误或访问冲突:1067 无效 'id' 的默认值 (SQL: create table advertising (id bigint unsigned not null 默认 'None' auto_increment 主键,slug varchar(50) 在id 之后整理“utf8_unicode_ci”不为空, provider_name varchar(100) 整理 'utf8_unicode_ci' null, tracking_code_large text collat​​e 'utf8_unicode_ci' null, tracking_code_medium text collat​​e 'utf8_unicode_ci' null, tracking_code_small text collat​​e 'utf8_unicode_ci' null, active tinyint unsigned null default '1') 默认字符集 utf8 collat​​e '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 的值,但仍然出错。

【问题讨论】:

  • 默认情况下,id 期望您传递 stringinteger 值。并且自增字段不需要任何默认值或可为空。

标签: sql laravel


【解决方案1】:

你不能有一个自动递增列的默认值,我也不明白你为什么希望它可以为空。

改变这个:

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

仅此:

$table->bigIncrements('id');

bigIncrements 已经表示自动递增且无符号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 2018-02-06
    相关资源
    最近更新 更多