基本创建表MYSQL语法错误

时间:2015-11-13 08:08:42

标签: php mysql syntax

好的,所以我认为这应该是某种简单的基本事实,我似乎无法为我的生活找到它。

这是代码:

$sql="
CREATE TABLE Customer
    (
        CustomerID  INT (2)     NOT NULL AUTO_INCREMENT PRIMARY KEY,
        FirstName   CHAR(15)    NOT NULL,
        SecondName  CHAR(15)    NOT NULL,
        StreetAdd   CHAR (255)  NOT NULL,
        City        CHAR (30)   NOT NULL,
        States      CHAR (3)    NOT NULL,
        ZIP         INT (4)     NOT NULL,
        Credit      INT(4),
        Balance     DOUBLE(20)
    )
    ";

错误是:

  

您的SQL语法有错误;查看与>您的MySQL服务器版本对应的手册,以便在第11行附近使用正确的语法'))'

这很简单吧?我的意思是它应该很简单?我的完整代码中有另一个表有类似的错误,然后我有第三个工作正常。我注意到他们之间没有任何区别。

我已经弄乱了大约2个小时的语法,我无法弄明白。

2 个答案:

答案 0 :(得分:2)

在MySQL中,当创建浮动加倍时,您需要指定小数点后存储的数量如果您定义存储的长度。 Source

要么定义两个数字,要么根本不定义长度。

所以,只需添加第二个数字,例如我的例子:

CREATE TABLE Customer
    (
        CustomerID  INT (2)     NOT NULL AUTO_INCREMENT PRIMARY KEY,
        FirstName   CHAR(15)    NOT NULL,
        SecondName  CHAR(15)    NOT NULL,
        StreetAdd   CHAR (255)  NOT NULL,
        City        CHAR (30)   NOT NULL,
        States      CHAR (3)    NOT NULL,
        ZIP         INT (4)     NOT NULL,
        Credit      INT(4),
        Balance     DOUBLE(20,2)
    )

或完全删除长度参数

CREATE TABLE Customer
    (
        CustomerID  INT (2)     NOT NULL AUTO_INCREMENT PRIMARY KEY,
        FirstName   CHAR(15)    NOT NULL,
        SecondName  CHAR(15)    NOT NULL,
        StreetAdd   CHAR (255)  NOT NULL,
        City        CHAR (30)   NOT NULL,
        States      CHAR (3)    NOT NULL,
        ZIP         INT (4)     NOT NULL,
        Credit      INT(4),
        Balance     DOUBLE
    )

答案 1 :(得分:0)

应该是:Double不应包含20

CREATE TABLE Customer
    (
        CustomerID  INT (2)     NOT NULL AUTO_INCREMENT PRIMARY KEY,
        FirstName   CHAR(15)    NOT NULL,
        SecondName  CHAR(15)    NOT NULL,
        StreetAdd   CHAR (255)  NOT NULL,
        City        CHAR (30)   NOT NULL,
        States      CHAR (3)    NOT NULL,
        ZIP         INT (4)     NOT NULL,
        Credit      INT(4),
        Balance     DOUBLE
    )