下面是“MySQL解决Navicat设置默认字符串时的报错问题”的解决攻略:
问题描述
在使用Navicat等MySQL管理工具时,有时需要为表中的字段设置默认字符串,错误地设置默认值可能会导致”Invalid Default Value for ***“报错。
解决步骤
-
首先,确认MySQL服务器的版本。MySQL 5.7之后的版本默认开启了STRICT_TRANS_TABLES,为了防止无效的数据被插入到表中,将会对默认值做出限制。
-
如果MySQL服务器版本>=5.7,可以通过SET语句来关闭STRICT_TRANS_TABLES。在Navicat执行SET GLOBAL sql_mode='NO_ENGINE_SUBSTITUTION'命令即可关闭。
SET GLOBAL sql_mode='NO_ENGINE_SUBSTITUTION';
也可以在MySQL配置文件中my.cnf中添加如下配置
sql_mode = "NO_ENGINE_SUBSTITUTION"
修改之后,需要重启MySQL服务器使设置生效。
-
重新打开Navicat,添加默认字符串后进行保存即可。如下示例:
CREATE TABLE `test_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT 'John',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在使用Navicat向test_table添加数据时,如果name字段为null,则默认插入'John'。
注意事项
-
修改MySQL服务器配置文件前需要备份。
-
避免使用无效的默认字符串,如""或仅包含空格的字符串,这可能会导致MySQL服务器拒绝插入数据。
-
需要重启MySQL服务器后修改的设置才能生效。
-
修改MySQL服务器的配置文件需要对系统有足够的权限。
以上就是关于“MySQL解决Navicat设置默认字符串时的报错问题”的解决攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL解决Navicat设置默认字符串时的报错问题 - Python技术站