navicat 设置decimal失败

img


设置货币数据类型错误,通过命令行在数据库下设置都不行,请问是哪里出现了问题?

decimal 类型,你需要明确给出长度,包括小数长度,应该写作 decimal(10,2)这样的格式

该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据您提供的错误信息 "1067 - Invalid default value for 'BookPrice'",这意味着您正在尝试创建一个名为 "BookPrice" 的列,并且该列的默认值无效。
-
通常情况下,如果您在创建一个 DECIMAL 类型的列时,没有设置有效的默认值,那么 MySQL 数据库会默认使用 0 作为默认值。但是,如果您的 MySQL 版本是 5.7.23 或更高版本,则默认设置了 sql_mode 模式,该模式会拒绝使用无效的默认值。这就是为什么您无法在 MySQL 中使用命令行设置 DECIMAL 类型列的默认值。
-
如果您想要在 navicat 中创建一个 DECIMAL 类型的列,您可以在“默认值”字段中手动设置有效的默认值,例如 "0.00"。这样,您就可以成功创建 DECIMAL 类型的列。
-
如果您仍然无法解决问题,建议您检查您的 MySQL 版本和 sql_mode 设置。如果需要,您可以通过修改 sql_mode 设置来允许使用无效的默认值。例如,您可以执行以下命令来更改 sql_mode 设置:

SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';


这将允许您在创建 DECIMAL 类型列时使用无效的默认值。但是,这种做法不被推荐,因为它可能会导致数据不一致。

都非空了 还不给默认值?

img

挨个试试吧,可视话的话,不能具体查看更新SQL,只能挨个试了。

  • 非空
  • 默认值
  • 编码方式
  • 长度