【问题标题】:mySQL table creation fails - error 1064mySQL 表创建失败 - 错误 1064
【发布时间】:2011-03-22 15:57:34
【问题描述】:

我正在使用 mysql 管理 GUI 工具来创建一个表。以下是导致错误的查询语言:

CREATE TABLE `environment`.`moisture` (
  `city_id` INT,
  `date_holding` VARCHAR,
  `time_holding` VARCHAR,
  `open` REAL,
  `high` REAL,
  `low` REAL,
  `close` REAL,
)
CHARACTER SET utf8;

我的日期和时间不是 mysql 喜欢的格式,所以我选择 VARCHAR 作为这些列的类型,并将它们称为保存列,直到我可以运行查询以进行必要的转换。

当我尝试通过 GUI 执行此操作时,我得到以下信息:

执行 SQL 命令创建表时出错。
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 'NOT NULL,
附近使用的正确语法 `time_holding` VARCHAR 非空,
`open` REAL NOT NULL,
第 3 行的“高”RE(错误 1064)

知道为什么我会得到这个吗?我检查过我是否使用了任何保留字,但似乎不是这样。

非常感谢您的帮助。

【问题讨论】:

    标签: mysql create-table sql-types


    【解决方案1】:

    您遇到的第一个错误是由于 VARCHAR 字段需要这样的长度:VARCHAR(30)

    第二个错误(如果你修复了 2 个 varchars,你会得到)是最后一个括号之前的逗号。

    CREATE TABLE `environment`.`moisture` (
      `city_id` INT,
      `date_holding` VARCHAR(30),  --or whatever length you want
      `time_holding` VARCHAR(20),  --same
      `open` REAL,
      `high` REAL,
      `low` REAL,
      `close` REAL  --- no comma here
    )
    CHARACTER SET utf8;
    

    旁注:您知道 MySQL 有特定的类型来处理日期和时间,不是吗?所以你可以:

    CREATE TABLE `environment`.`moisture` (
      `city_id` INT,
      `date_holding` date,
      `time_holding` time,
      ...
    

    【讨论】:

    • 成功了。谢谢你。我正在使用管理 GUI,但我不知道我可以通过手动将 VARCHAR 更改为 VARCHAR(50) 来编辑数据类型...学到了一些新东西。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2018-01-26
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多