【问题标题】:MySQL #1064 Error DATETIMEMySQL #1064 错误日期时间
【发布时间】:2014-05-18 12:15:06
【问题描述】:

我正在制作一个基于 Web 的邮件系统,我必须使用以下代码创建一个表:

    CREATE TABLE 'messages'(
    'ID' INT(250) NOT NULL AUTO_INCREMENT,
    'To' VARCHAR(250) NOT NULL,
    'CC' VARCHAR(250),
    'BCC' VARCHAR(250),
    'From' VARCHAR(250) NOT NULL,
    'Subject' VARCHAR(250),
    'Message' LONG BLOB NOT NULL,
    'Date' DATETIME NOT NULL,
    'MailboxID' INT(250) NOT NULL,
    Primary Key ('ID'));

MySQL 说:

#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 ''messages'( 'ID' INT(250) NOT NULL AUTO_INCREMENT, 'To' VARCHAR(250) NOT NULL,' at line 1

可能是DATETIME中的错误?

【问题讨论】:

    标签: php mysql sql datetime syntax-error


    【解决方案1】:

    去掉列标识符周围的引号。要么使用刻度,要么根本不使用:

    CREATE TABLE messages(
        ID INT(250) NOT NULL AUTO_INCREMENT,
        To VARCHAR(250) NOT NULL,
        CC VARCHAR(250),
        BCC VARCHAR(250),
        From VARCHAR(250) NOT NULL,
        Subject VARCHAR(250),
        Message LONG BLOB NOT NULL,
        Date DATETIME NOT NULL,
        MailboxID INT(250) NOT NULL,
    Primary Key (ID));
    

    或者:

    CREATE TABLE `messages`(
        `ID` INT(250) NOT NULL AUTO_INCREMENT,
        `To` VARCHAR(250) NOT NULL,
        `CC` VARCHAR(250),
        `BCC` VARCHAR(250),
        `From` VARCHAR(250) NOT NULL,
        `Subject` VARCHAR(250),
        `Message` LONG BLOB NOT NULL,
        `Date` DATETIME NOT NULL,
        `MailboxID` INT(250) NOT NULL,
    Primary Key (`ID`));
    

    【讨论】:

    • @MKhalidJunaid 是的。固定。
    【解决方案2】:

    去掉表scema中所有字段名的单引号

    语法应该是

    create table table_name
    (
      col_name int(1)
      ......
      .....
    );
    

    所以在你的情况下应该是

    CREATE TABLE messages(
        ID INT(250) NOT NULL AUTO_INCREMENT,
        `To` VARCHAR(250) NOT NULL,
        CC VARCHAR(250),
        BCC VARCHAR(250),
        `From` VARCHAR(250) NOT NULL,
        Subject VARCHAR(250),
        Message LONG BLOB NOT NULL,
        Date DATETIME NOT NULL,
        MailboxID INT(250) NOT NULL,
        Primary Key ('ID'));
    

    此外,您使用的是保留关键字 TO 和 FROM,因此您还需要对它们进行反引号

    【讨论】:

      【解决方案3】:

      您可以查看有关datetime 的开发人员的mysql 文档。

      【讨论】:

        猜你喜欢
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 2011-02-11
        • 2015-07-03
        • 1970-01-01
        • 2013-12-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多