MySQL创建表错误1064

时间:2013-10-14 19:27:18

标签: mysql database

我正在尝试在MySQL中创建一个表,但它不想播放:

create table traders(
    traderID INT(9) ZEROFILL NOT NULL AUTO_INCREMENT UNSIGNED,
    traderProfileName VARCHAR(64) NOT NULL,
    traderPassword CHAR(128) NOT NULL,
    traderFirstName VARCHAR(40) NOT NULL,
    traderSurname VARCHAR(40) NOT NULL,
    traderContactPhone VARCHAR(14) NOT NULL,
    locationPostCode CHAR(4) NOT NULL,
    traderEmail VARCHAR(120) NOT NULL,
    traderBio VARCHAR(255) DEFAULT NULL,
    traderReviewRating DECIMAL(5,2) DEFAULT NULL,
    traderLastLogin DATETIME DEFAULT NULL,
    PRIMARY_KEY(traderID)
);

我收到了错误:

"ERROR 1064 (42000): 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 'UNSIGNED,
traderProfileName VARCHAR(64) NOT NULL,
traderPassword CHAR(128) NOT ' at line 2"

这是否简单,因为我对表设置使用了不正确的参数?

4 个答案:

答案 0 :(得分:0)

默认情况下,自动增量是一个整数,无需定义无符号。

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

答案 1 :(得分:0)

试试这个

  create table traders
(
traderID INT(9) ZEROFILL NOT NULL  AUTO_INCREMENT PRIMARY KEY,
traderProfileName VARCHAR(64) NOT NULL,
traderPassword CHAR(128) NOT NULL,
traderFirstName VARCHAR(40) NOT NULL,
traderSurname VARCHAR(40) NOT NULL,
traderContactPhone VARCHAR(14) NOT NULL,
locationPostCode CHAR(4) NOT NULL,
traderEmail VARCHAR(120) NOT NULL,
traderBio VARCHAR(255) DEFAULT NULL,
traderReviewRating DECIMAL(5,2) DEFAULT NULL,
traderLastLogin DATETIME DEFAULT NULL
);
  • 无需签名

  • 在交易者(id)

  • 的同一行使用主键

here working demo

答案 2 :(得分:0)

使用UNSIGNED时,您必须将其放在数据类型旁边,即:INT UNSIGNED

您更正的CREATE声明应如下所示:

create table traders(
    traderID INT(9) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT PRIMARY KEY,
--           ^^^^^^^^^^^^^^^ Here is the problem.
--  Also, you can define this column as a primary key +---^^^^^^^^^^^
--  directly in the column definition                 |
    traderProfileName VARCHAR(64) NOT NULL,
    traderPassword CHAR(128) NOT NULL,
    traderFirstName VARCHAR(40) NOT NULL,
    traderSurname VARCHAR(40) NOT NULL,
    traderContactPhone VARCHAR(14) NOT NULL,
    locationPostCode CHAR(4) NOT NULL,
    traderEmail VARCHAR(120) NOT NULL,
    traderBio VARCHAR(255) DEFAULT NULL,
    traderReviewRating DECIMAL(5,2) DEFAULT NULL,
    traderLastLogin DATETIME DEFAULT NULL,
);

你可能会问,“为什么?”那是因为有两个“类型”的整数:

  • INT已签名(可以存储从-2147483648到2147483647的值)
  • INT UNSIGNED(可以存储0到4294967295之间的值)

参考:

答案 3 :(得分:-1)

您有一些MySQL语法错误。这是修复:

CREATE TABLE IF NOT EXISTS `traders` (
`traderID` INT(9) NOT NULL AUTO_INCREMENT,
`traderProfileName` VARCHAR(64) NOT NULL,
`traderPassword` CHAR(128) NOT NULL,
`traderFirstName` VARCHAR(40) NOT NULL,
`traderSurname` VARCHAR(40) NOT NULL,
`traderContactPhone` VARCHAR(14) NOT NULL,
`locationPostCode` CHAR(4) NOT NULL,
`traderEmail` VARCHAR(120) NOT NULL,
`traderBio` VARCHAR(255) DEFAULT NULL,
`traderReviewRating` DECIMAL(5,2) DEFAULT NULL,
`traderLastLogin` DATETIME DEFAULT NULL,
PRIMARY KEY (`traderID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1;

我会添加首选引擎,charset,collat​​ion和自动增量起始编号。 如果你愿意这样做,只需用最后一行代替:

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1;

并根据需要进行修改。 否则留下右括号。

);