繁体   English   中英

MySQL 创建表错误 1064

[英]MySQL Create Table Error 1064

我正在尝试在 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"

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

当您使用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 的值)

参考:

自增默认为整数,无需定义无符号。

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

试试这个

  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)相同的行中使用主键

这里工作演示

您有一些 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;

我会添加首选引擎、字符集、排序规则和自动增量起始编号。 如果您想这样做,只需将最后一行替换为:

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

并根据需要进行修改。 否则离开右括号。

);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM