mysql字段';col1&x27;不';没有默认值
我的db模式定义如下mysql字段';col1&x27;不';没有默认值,mysql,Mysql,我的db模式定义如下 CREATE TABLE `ATestTable` ( id bigint(20) NOT NULL AUTO_INCREMENT, refId varchar(32) NOT NULL, col1 text COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_keyy_refId` (`refId`) ) ENGINE=InnoDB AUT
CREATE TABLE `ATestTable` (
id bigint(20) NOT NULL AUTO_INCREMENT,
refId varchar(32) NOT NULL,
col1 text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_keyy_refId` (`refId`)
) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
当我有这样的事情
Insert into ATestTable (refId, col1) Values ('abc', 'def');
我发现错误字段“col1”没有默认值
。我在网上搜索过,如果没有为此NOTNULL列指定值,则会发生此错误。但我确实指定了值。我甚至在我的本地数据库上尝试了相同的插入脚本,而且效果很好。那么,这是一个数据库服务器配置的事情吗
我运行
show变量,如“%sql\u mode%”
,但不起作用的变量是NO\u ENGINE\u SUBSTITUTION
。我的本地数据库(有效)只给我完整的分组依据,严格的转换表,没有输入日期,没有输入日期,错误,没有自动创建用户,没有引擎替换
有两件事你可以尝试,另一件是解决你的问题
1) 通过运行此查询,可以更改sql模式以匹配本地db模式
SET GLOBAL sql_mode = 'modes';
以逗号分隔的模式。请注意,只有在您拥有管理权限的情况下,此操作才有效。如果不使用
SET SESSION sql_mode = 'modes';
这将只影响当前客户端
2) 为Col1设置一个默认值(例如:空文本),触发器将无论如何更新该值
CREATE TABLE `ATestTable` (
id bigint(20) NOT NULL AUTO_INCREMENT,
refId varchar(32) NOT NULL,
col1 text COLLATE utf8_unicode_ci DEFAULT ' ' not.
NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_keyy_refId` (`refId`)
) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT.
CHARSET=utf8 COLLATE=utf8_unicode_ci;
错误不可能来自那一行。您必须有其他正在插入的内容,但没有为
col1
提供值。您是否在插入此表的此表或其他表上有触发器?@Nick,请您对答案发表意见。所以我可以接受。@Laodao我很高兴解决了你的问题,但是我可能没有足够的信息可以提供给其他用户。谢谢你的提议。