gpt4 book ai didi

MySQL文本字段默认值和版本差异

转载 作者:行者123 更新时间:2023-11-29 03:55:11 25 4
gpt4 key购买 nike

在开发我的开发板软件时,我被告知 MySQL 5.1.36 在文本字段和默认值方面存在问题。这发生在注册新用户时,这是安装后要做的第一件事。

除其他外,用户表有一个定义为“TEXT NOT NULL”的签名字段。注册时,该字段未在 INSERT 查询的字段列表中指定。在我运行 MySQL 5.1.30 的本地测试/开发服务器上,这工作正常。在我运行 MySQL 5.0.91 的实时服务器上,这也有效。但是后来这个测试人员来找我说它在 他的 运行 5.1.36 的测试服务器上不起作用,错误消息提示查询必须指定默认值。

这里有很多 TEXT 字段。我最初的计划是检测 MySQL 5.1.36 并让安装程序拒绝运行,但前提是行为是 5.1.36 独有的。 .37 或更高版本也一样吗?我是不是错过了什么?

最佳答案

此行为不是 5.1.36 独有的,事实上,我认为现在假设 MySQL 版本与此问题完全相关还为时过早。

我建议您检查正在使用的 SQL_MODE:

select @@SQL_MODE;

如果 SQL_MODE 为空,那么我希望插入在您列出的所有版本中都能成功(带有警告)。

如果 SQL_MODE 更严格,例如 TRADITIONALSTRICT_ALL_TABLES,那么我希望插入在您列出的所有版本中都失败并出现错误:错误 1364 (HY000):字段“your_field”没有默认值

可能的修复:

1) 更改列以明确允许 NULL 值:

ALTER TABLE your_table MODIFY COLUMN your_column TEXT NULL;

2) 强制 SQL_MODE 为 ''。最好的方法是在 my.cnf 中设置并重启 mysql,但您也可以在 MySQL 提示符下设置以进行测试:

SET SESSION SQL_MODE = '';

关于MySQL文本字段默认值和版本差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5158371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com