为啥在 phpmyadmin 中创建此表会生成 #1064 错误?
Posted
技术标签:
【中文标题】为啥在 phpmyadmin 中创建此表会生成 #1064 错误?【英文标题】:Why is creating this table generating #1064 error in phpmyadmin?为什么在 phpmyadmin 中创建此表会生成 #1064 错误? 【发布时间】:2021-01-08 03:04:22 【问题描述】:我正在尝试创建一个表,但此错误不断弹出:
"#1064 - 您的 SQL 语法有错误;请查看与您的 mysql 服务器版本相对应的手册,了解在 ') NOT NULL 附近使用的正确语法,
url
VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci N' at line 2"
我的代码:
CREATE TABLE `stema`.`products`(
`code` DOUBLE(10) NOT NULL,
`url` VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
`product_name` VARCHAR(100) NULL,
`generic_name` VARCHAR(100) NULL,
`quantity` VARCHAR(50) NULL,
`packaging` VARCHAR(100) NULL,
`brands` VARCHAR(50) NULL,
`categories` VARCHAR(100) NULL,
`countries` VARCHAR(50) NULL,
`ingredients_text` VARCHAR(200) NULL,
`allergens` VARCHAR(100) NULL,
`traces` VARCHAR(100) NULL,
`serving_size` VARCHAR(100) NULL,
`serving_quantity` INT(10) NULL,
`additives_n` INT(10) NULL,
`additives_tags` VARCHAR(100) NULL,
`nutriscore_score` INT(10) NULL,
`nutriscore_grade` VARCHAR(10) NULL,
`nova_group` VARCHAR(10) NULL,
`pnns_groups_1` VARCHAR(100) NULL,
`pnns_groups_2` VARCHAR(100) NULL,
`main_category` VARCHAR(100) NULL,
`image_url` VARCHAR(500) NULL,
`image_small_url` VARCHAR(500) NULL,
`image_front_url` VARCHAR(500) NULL,
`energy-kj_100g` DOUBLE(10) NULL,
`energy-kcal_100g` DOUBLE(10) NULL,
`energy_100g` DOUBLE(10) NULL,
`fat_100g` DOUBLE(10) NULL,
`saturated-fat_100g` DOUBLE(10) NULL,
`sugars_100g` DOUBLE(10) NULL,
`salt_100g` DOUBLE(10) NULL,
`sodium_100g` DOUBLE(10) NULL,
PRIMARY KEY(`code`)
);
【问题讨论】:
即使double(10)
被允许,你也不会将浮点数作为表的主键。
【参考方案1】:
查看DOUBLE PRECISION
数据类型的文档:
https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html
MySQL 允许使用非标准语法:FLOAT(M,D) 或 REAL(M,D) 或 DOUBLE PRECISION(M,D)。这里,(M,D) 表示最多可以存储 M 位的值,其中 D 位可能在小数点后。
它需要两个数字参数,而不是一个。你只有一个。
还要注意:
从 MySQL 8.0.17 开始,不推荐使用非标准 FLOAT(M,D) 和 DOUBLE(M,D) 语法,并且在未来的 MySQL 版本中将删除对它的支持。
为确保您的代码在升级 MySQL 时保持兼容,我建议您养成在不带数字参数的情况下声明 DOUBLE PRECISION
的习惯。
【讨论】:
以上是关于为啥在 phpmyadmin 中创建此表会生成 #1064 错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Parse cloud Javascript SDK 中创建此查询?