phpmyadmin里,数据类型设置成double时就报错#1064 - You have an error in your SQL syntax

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpmyadmin里,数据类型设置成double时就报错#1064 - You have an error in your SQL syntax相关的知识,希望对你有一定的参考价值。

我用phpmyadmin创建一张数据表的时候,有一个price字段,我希望价格是两位数的,所以就把数据类型设置为double, 然后保存,但是保存不了,报错:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your mysql server version for the right syntax to use near ') NOT NULL, CHANGE `total` `total` INT(11) NOT NULL, CHANGE `pic` `pic` VARCHAR(' at line 1

只有把price的类型设置为INT,才能保存。
然后我就自己去排查,因为上面报错提到“your MySQL server version ”,我就查看了我的MySql服务器信息如下:

服务器: 127.0.0.1 via TCP/IP
服务器类型: MySQL
服务器版本: 5.5.32 - MySQL Community Server (GPL)
协议版本: 10
用户: root@localhost
服务器字符集: UTF-8 Unicode (utf8)

难道是跟这个有关?

我想问的是:
1.为什么数据类型不能选double?
2.如果我把数据类型选INT,能不能设置一个有两个小数点的价格?
3.为什么表中的长度/值,都是11?我自己没有去设置,是系统自己设置的11吗?

谢谢好心人来帮帮我!!真的是搞了一晚上都搞不清楚啊!!刚注册的只有5分悬赏,希望不要嫌弃。

只要把DOUBLE变成INT,就可以正常保存了。

不知道跟我的MySql服务器是否有关呢?

参考技术A 如果你将字段类型选为Double 的话,就把长度去掉就ok的。。。。。。本回答被提问者采纳 参考技术B 应该有关吧

c语言 不同数据类型间的混合运算

书上有个例子
“6.0/5是将5转换成float型后进行运算,值是1.2”
而自动转换里float型不是要自动转换成double型参与运算,而且是必须的转换。(即使两个float型数据相加,也要先转换成double型,然后再相加)。

高手帮忙解释下啊,万分感谢!!!
书上写着
自动转换里float型要自动转换成double型参与运算,而且是必须的转换。(即使两个float型数据相加,也要先转换成double型,然后再相加)。

书上有个例子
“6.0/5是将5转换成float型后进行运算,值是1.2”
相矛盾了啊!???

c语言里 不同数据类型间的混合运算会强制转换的``
`如6.0/5``结果必然向float型转换```
比如char short型参与运算都是先转为int型`
float转为double型
int double混合运算时转为double型
都是向着占用较大的方向转换``使适用范围也更大```

``书上应该说的比较详细了 `呵呵`
参考技术A 再回来说下,你可以这样进行检测,看隐式转换的问题还是溢出的问题:
typedef unsigned long long uint64;//最新的编译器都支持这种用法吧,总之你找个能表示64位的longlong就行了.
//uint
cout << (uint64)iu + (uint)i << endl;

这里先将i转换成uint型,此时未溢出,然后加上转换uint64(iu)的值,再将其提升为uint64,因为原来已经为uint型,所以提升为uint64时值不再改变,最后结果超出了uint的范围,如果你再对最终结果进行(uint),得到的答案你应该知道了.

------------------
溢出问题.

i=-8,转化为uint型后,为2^32-8,再加上个uint(10),结果为:
2^32+2,溢出后,结果为2.

你只考虑到一个很大的正数,却没有考虑到uint范围的问题!

以上是关于phpmyadmin里,数据类型设置成double时就报错#1064 - You have an error in your SQL syntax的主要内容,如果未能解决你的问题,请参考以下文章

急急急!!!在asp里怎么把label.text类型转换成double??

c语言 不同数据类型间的混合运算

java的double的大数值时 怎么才能不显示成

phpMyAdmin如何将InnoDB数据表类型 转换修改成MyISAM默认引擎?

VBA里怎么把Double类型保留1位小数,不四舍五入,如3.7777=3.7 ,456.666=456.6

记一次踩坑 Gson转换map对象时 Integer类型自动转换成Double类型