【问题标题】:MySQL out of range value for decimal columnMySQL十进制列的值超出范围
【发布时间】:2012-08-29 18:46:12
【问题描述】:

搜索后,我发现很多超出范围的问题,因为人们不知道十进制(m,n)中的第一个数字 m 是数字的总数。不过,这不是我的问题。

对于有问题的专栏,我有以下内容:

Field | Type                   | Null | Key | Default | Extra
preco | decimal(50,2) unsigned | NO   |     | 0.00    |

设置小数(50,2)比我真正想要或需要的要多得多。我真的只想要10位数。它是一个价格,所以任何超过 1 亿的东西都可能是荒谬的,所以 decimal(10,2) 可能更合适。但是,MySQL 不接受以下查询:

INSERT INTO `produto` (`tipo_id`, `preco`, `qtd`, `opcao1`) VALUES (110, '77888555.43', '10', 'Azul')

我通过 CodeIgniter、phpMyAdmin 和直接在 MySQL 命令行客户端中尝试了查询。我也试过不带引号的十进制值,但我总是得到同样的错误:

"第 2 行的列 'preco' 的值超出范围"

【问题讨论】:

    标签: mysql decimal range


    【解决方案1】:

    您将preco 的值作为字符串发送,MySQL 以与数值相同的方式接受该字符串。

    【讨论】:

      【解决方案2】:

      我已经用SQLyog 试过了,效果很好。我尝试直接通过表数据选项卡和使用查询在SQLyog 中更改两种方式。它只是在工作。十进制范围似乎没有问题,但问题出在其他地方。请参阅随附的屏幕截图

      直接通过表格数据选项卡

      通过插入查询

      表结构

      希望对你有帮助...

      【讨论】:

      • 谢谢。看起来我的特定 MySQL 应用程序存在一些问题。正如我所说,我直接在 MyQSL 命令行客户端中输入了查询,在那里,我运行了“describe produto”,得到了所描述的确切结果。因此,当您说“其他地方”时,除了 MySQL 本身,真的没有其他地方。
      • 这里还有点奇怪的是,我可以只删除查询“7888555.43”中的一位数字,而 MySQL 接受它。
      • 那你怎么看?是 MySQL 的错误吗?
      • 在其他地方,我的意思是查询中根本不存在问题。您使用的是什么版本的 MySQL?您可以尝试再次卸载并重新安装 MySQL 吗?如果是这样,请备份您的数据!!!
      • 我会接受,但我认为我的解决方案更好。我有 17 个数据库,其中一个有超过 100,000 条记录,所以备份所有内容的想法并没有让我兴奋。只需下载一个表,删除它并再次上传就容易多了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多