【问题标题】:SQL Column Names same as names for data types - causing errorsSQL 列名称与数据类型的名称相同 - 导致错误
【发布时间】:2013-11-29 12:36:36
【问题描述】:

我对 SQL 非常陌生,在创建表结构时遇到了问题。

我想创建一个包含四列的表 - idtextdatereplace。问题是这在 MySQL 中给了我一个错误,我认为因为 TEXTDATE 也是数据类型的名称,REPLACE 是 SQL 中使用的另一个术语,所以 MySQL 对我的列名应该是什么感到困惑是或没有意识到我给的名字是真实的名字。有什么办法可以解决这个问题来获得我想要的列名,而不必调用其他列,然后在创建后手动将它们改回来?

这是我的 SQL:

CREATE TABLE message (
    id INT UNIQUE AUTO_INCREMENT NOT NULL,
    text TEXT,
    date INT,
    replace INT DEFAULT 0
);

我得到的错误是:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的“替换 INT DEFAULT 0 )”附近使用正确的语法

CREATE TABLE message(
    id INT UNIQUE AUTO_INCREMENT NOT NULL ,
    TEXT TEXT,
    DATE INT,
    REPLACE INT DEFAULT 0
);

【问题讨论】:

  • 你只是自找麻烦。

标签: mysql sql database create-table table-structure


【解决方案1】:
CREATE TABLE message (
    `id` INT UNIQUE AUTO_INCREMENT NOT NULL,
    `text` TEXT,
    `date` INT,
    `replace` INT DEFAULT 0
);

【讨论】:

  • 非常感谢,我不确定要接受哪个答案,但我得到的另一个答案给出了更多解释,我勾选了那个!
【解决方案2】:

一般规则是不要使用这些关键字,为您的字段名称提供不同于“文本”的内容。如果必须,请在列名周围使用 `(反引号)来告诉 SQL 它是列名,而不是关键字的含义。我建议不要将您的列称为“来自”、“选择”和“位置”;)

【讨论】:

  • 好的,谢谢你的解释,我想我会听从你的警告的!我试图复制另一个使用这些列名的数据库,所以这就是我试图绕过它的原因,但如果它只会造成更多的麻烦而不是值得,我会更改名称!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多