【问题标题】:What is wrong with the syntax?语法有什么问题?
【发布时间】:2013-04-04 01:11:01
【问题描述】:
CREATE TABLE Existing_medical_condition (
    condition VARCHAR(50) NOT NULL, 
    date_of_diagnosis DATE, treatment TEXT, 
    pssn INT NOT NULL, 
    CONSTRAINT emc_key PRIMARY KEY(condition, pssn), 
    FOREIGN KEY(pssn) REFERENCES Patient(ssn)
);

给出错误:

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“condition VARCHAR(50) NOT NULL, date_of_diagnosis DATE,treatment TEXT, pssn INT”附近使用正确的语法

【问题讨论】:

  • 如果以下任何答案有帮助,请考虑接受它们作为答案。

标签: mysql create-table


【解决方案1】:

尽量避免为列名保留关键字。如果你还想要,你可以在下面写。

CREATE TABLE Existing_medical_condition ([condition] VARCHAR(50) NOT NULL,     date_of_diagnosis DATE, treatment TEXT, 
pssn INT NOT NULL, CONSTRAINT emc_key PRIMARY KEY(condition, pssn), FOREIGN KEY(pssn)       REFERENCES Patient(ssn));

【讨论】:

    【解决方案2】:

    条件是reserved word。你必须用反引号括起来:

    CREATE TABLE Existing_medical_condition (
        `condition` VARCHAR(50) NOT NULL,
        date_of_diagnosis DATE, 
        treatment TEXT, 
        pssn INT NOT NULL, 
        CONSTRAINT emc_key 
        PRIMARY KEY(condition, pssn), 
        FOREIGN KEY(pssn) REFERENCES Patient(ssn));
    

    【讨论】:

    • 我以为是[条件],但我只是远离保留字。
    • @JBrooks 方括号用于 MSSQL。
    • 即使您可以使用带反引号的保留字,但这样做通常不是最好的主意,因为迟早您会遇到麻烦。我建议使用condition_name 或类似的东西。
    • 谢谢。我选择使用 condition_name。
    猜你喜欢
    • 2016-04-11
    • 2014-07-10
    • 2015-11-30
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2017-12-12
    相关资源
    最近更新 更多