此查询中的错误在哪里

时间:2014-01-30 17:01:42

标签: mysql create-table

我一遍又一遍地看着这个,看看我是否可以额外看一眼。我试图运行一个创建表查询,但我似乎无法让它工作。我得到的错误是

#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 '`1`, `id_shop` int(11) NOT NULL DEFAULT `1`, `id_lang` int(10) NOT NULL DEFAUL' at line 4

这里是我试图运行的查询

CREATE TABLE IF NOT EXISTS `PREFIX_quote` (
`id_quote` int(10) NOT NULL AUTO_INCREMENT,
`reference` varchar(9) DEFAULT NULL,
`id_shop_group` int(11) NOT NULL DEFAULT `1`,
`id_shop` int(11) NOT NULL DEFAULT `1`,
`id_lang` int(10) NOT NULL DEFAULT `1`,
`id_customer` int(10) NOT NULL,
`total_discounts` decimal(17,2) NOT NULL DEFAULT `0.00`,
`total_products` decimal(17,2) NOT NULL DEFAULT `0.00`,
`total_product_wt` decimal(17,2) NOT NULL DEFAULT `0.00`,
`total_shipping` decimal(17,2) NOT NULL DEFAULT `0.00`,
`quote_number` int(10) NOT NULL DEFAULT `0`,
`quote_date` datetime NOT NULL,
`valid` int(1) NOT NULL DEFAULT `1`,
`id_employee` int(11) NOT NULL,
`date_add` datetime NOT NULL,
`date_upd` datetime NOT NULL,
PRIMARY KEY (`id_quote`),
KEY `id_customer` (`id_customer`),
KEY `id_employee` (`id_employee`));

3 个答案:

答案 0 :(得分:4)

在整数周围放下反引号。请参阅the fiddle

CREATE TABLE IF NOT EXISTS `PREFIX_quote` (
`id_quote` int(10) NOT NULL AUTO_INCREMENT,
`reference` varchar(9) DEFAULT NULL,
`id_shop_group` int(11) NOT NULL DEFAULT 1,
`id_shop` int(11) NOT NULL DEFAULT 1,
`id_lang` int(10) NOT NULL DEFAULT 1,
`id_customer` int(10) NOT NULL,
`total_discounts` decimal(17,2) NOT NULL DEFAULT 0.00,
`total_products` decimal(17,2) NOT NULL DEFAULT 0.00,
`total_product_wt` decimal(17,2) NOT NULL DEFAULT 0.00,
`total_shipping` decimal(17,2) NOT NULL DEFAULT 0.00,
`quote_number` int(10) NOT NULL DEFAULT 0,
`quote_date` datetime NOT NULL,
`valid` int(1) NOT NULL DEFAULT 1,
`id_employee` int(11) NOT NULL,
`date_add` datetime NOT NULL,
`date_upd` datetime NOT NULL,
PRIMARY KEY (`id_quote`),
KEY `id_customer` (`id_customer`),
KEY `id_employee` (`id_employee`));

答案 1 :(得分:4)

反引号(`)用于引用MySQL中的identifiers,因此可以在其中显示保留字或特殊字符。它们通常用于包含您正在执行的列名称,即使它通常是不必要的,但不是:从默认值中删除反引号:

CREATE TABLE IF NOT EXISTS `PREFIX_quote` (
`id_quote` int(10) NOT NULL AUTO_INCREMENT,
`reference` varchar(9) DEFAULT NULL,
`id_shop_group` int(11) NOT NULL DEFAULT 1,
...

答案 2 :(得分:2)

你的价值在于反叛:`1`,这是不正确的。这是引号,或者因为它是一个数字,没有引用。

`id_shop_group` int(11) NOT NULL DEFAULT 1,

确保为您的所有字段执行此操作。