插入记录时出现语法错误或访问冲突
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 collate 'utf8_unicode_ci' null,tracking_code_medium
text collate 'utf8_unicode_ci' null,tracking_code_small
text collate 'utf8_unicode_ci' null,active
tinyint unsigned null default '1') 默认字符集 utf8 collate '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
期望您传递 string 的 integer 值。并且自增字段不需要任何默认值或可为空。
【参考方案1】:
你不能有一个自动递增列的默认值,我也不明白你为什么希望它可以为空。
改变这个:
$table->bigIncrements('id')->unsigned()->default('None')->nullable($value = false)->autoIncrement();
仅此:
$table->bigIncrements('id');
bigIncrements
已经表示自动递增且无符号。
【讨论】:
以上是关于插入记录时出现语法错误或访问冲突的主要内容,如果未能解决你的问题,请参考以下文章
使用 C# windows 窗体向 Ms Access 数据库插入新记录时出现语法错误
尝试使用多个值插入 SQL Server 时出现不正确的语法错误
在 INSERT INTO 语句中插入值时出现语法错误。 -VB 和 ACCESS 2013