2012-08-29 41 views
0

搜索后,我发现很多超出范围的问题,人们不知道第一个数字m(十进制)(m,n)是总位数。但是,那不是我的问题。MySQL超出范围值的十进制列

对于有问题的专栏中,我有以下几点:

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

设置十进制(50,2)的方式比我真正想要或需要。我真的只需要10位数字。它是一个价格,所以超过一亿的可能是荒谬的,所以十进制(10,2)可能更合适。然而,MySQL是不接受以下查询:

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

我通过笨,phpMyAdmin的,直接在MySQL命令行客户端尝试查询。我也试了一下没有对十进制值的引号,但我总是得到同样的错误:

“出列‘PRECO’范围值在2行”

回答

1

我试过用SQLyog,它工作的很完美。我试图通过表格数据选项卡并使用查询直接在SQLyog中更改这两种方式。它只是在工作。似乎在十进制范围内没有问题,但是问题在其他地方。看到屏幕截图附

直接通过表数据标签 Directly through Table Data Tab

通过插入查询 Through insert query

表结构enter image description here

希望它可以帮助...

+0

谢谢。它看起来像我的特定的MySQL应用程序有一些问题。正如我所说的,我直接在MyQSL命令行客户端中输入了查询,并在那里运行“describe produto”,并得到了所描述的确切结果。所以当你说“别的地方”时,除了MySQL本身,其他地方确实没有其他地方了。 –

+0

其他奇怪的是,我可以删除查询'7888555.43'中的一个数字,并且MySQL接受它。 –

+0

那你觉得呢?这是一个MySQL的错误? –

2

您要为preco作为发送值字符串被MySQL接受的方式与数值相同。

+0

我已经试过 –

-1

我所解决的问题删除表并重新创建它。它现在接受写入的查询。