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

Posted

技术标签:

【中文标题】插入记录时出现语法错误或访问冲突【英文标题】: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 值。并且自增字段不需要任何默认值或可为空。 【参考方案1】:

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

改变这个:

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

仅此:

$table->bigIncrements('id');

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

【讨论】:

以上是关于插入记录时出现语法错误或访问冲突的主要内容,如果未能解决你的问题,请参考以下文章

使用 OleDb 插入访问时出现语法错误

使用 C# windows 窗体向 Ms Access 数据库插入新记录时出现语法错误

尝试使用多个值插入 SQL Server 时出现不正确的语法错误

在 INSERT INTO 语句中插入值时出现语法错误。 -VB 和 ACCESS 2013

当我尝试通过 C# 将日期插入 Access 数据库时出现“INSERT INTO 语句中的语法错误”错误

插入 JSON 对象时出现 Python pymysql 语法错误