mySQL 表创建失败 - 错误 1064

标签 mysql create-table sql-types

我正在使用 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 执行此操作时,我得到以下信息:

Error executing SQL commands to create table.
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 'NOT NULL,
`time_holding` VARCHAR NOT NULL,
`open` REAL NOT NULL,
`high` RE' at line 3 (error 1064)

知道为什么我会收到这个吗?我已检查是否使用了任何保留字,但情况似乎并非如此。

我们将非常感谢您的帮助。

最佳答案

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

第二个错误(如果修复 2 个 varchar,则会出现)是最后一个括号之前的逗号。

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,
  ...

关于mySQL 表创建失败 - 错误 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5394046/

相关文章:

sqlite3 : creating table with no columns

sql-server - 在 SQL Server 上使用 varchar(MAX) 与 TEXT

.net - GUID 的字符串长度是多少?

mysql - mysql 查询运行需要双别名

错误1406

mysql - 2 个表 - 相互查询并将每个表中的 pk 存储到一个新表中

sql - 如何确定我需要以什么顺序从 ERD 创建表

MySQL varchar 到数字

PHP MySql Backup 不工作 - 没有错误显示

java.sql.SQLSyntaxErrorException : Unknown database 'userinfo'