【问题标题】:MYSQL Error 1064 in DateTime and TimeStampDateTime 和 TimeStamp 中的 MYSQL 错误 1064
【发布时间】:2020-06-16 12:15:21
【问题描述】:

美好的一天,我正在我的数据库上创建一些表,当我尝试保存时,它会抛出这个错误

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '0) NOT NULL 、date_registered DATETIME NOT NULL 、last_login TIMESTAMP NOT' 附近使用正确的语法

这种错误之前已经在 Stackoverflow 上调试过here,解决方案是从 TIMESTAMP 列中删除长度。其他解决方案要求建议应从列标识符中删除引号或应使用刻度。不幸的是,我的 DATETIME 和 TIMESTAMP 列没有长度,而且我的列标识符周围有刻度。

这是我的 SQL 语句的样子。有人可以帮忙吗?

CREATE TABLE `inventoryman_db`.`users` 
( `id` INT NOT NULL AUTO_INCREMENT , 
`full_name` VARCHAR(255) NOT NULL , 
`email` VARCHAR(255) NOT NULL , 
`password` VARCHAR(300) NOT NULL , 
`usertype` ENUM(0) NOT NULL , 
`date_registered` DATETIME NOT NULL , 
`last_login` TIMESTAMP NOT NULL , 
`notes` VARCHAR(255) NOT NULL COMMENT 'For verification and other purposes, we will store a random key here' , 
PRIMARY KEY (`id`)) 
ENGINE = InnoDB;

【问题讨论】:

  • 枚举是你需要的字符串usertypeENUM('0')
  • 您的ENUM 只有一个选项。 MySQL 可能需要 2 个或更多。如果您只想保存 0,请使用 TINYINT
  • 问题实际上出在 ENUM 上,而不是 date_registered。 ENUM 的创建方式与其他列不同——您实际上必须指定所有可能的值,这些值应该被引用。见dev.mysql.com/doc/refman/8.0/en/enum.html。也就是说,ENUM 非常困难和烦人(数字作为严格的字符串工作,所以0'0' 不匹配),您需要修改表以添加任何值。你最好使用字符串或整数,并用你的代码控制值。
  • 谢谢,它成功了。最初,我将 ENUM 值设置为“Admin”和“User”,但不知何故 SQL 语句没有捕获它,所以我不得不在语句中手动输入它们。我是这样做的 ENUM('Admin', 'User') NOT NULL 并且它有效。再次感谢。

标签: mysql sql database


【解决方案1】:

试试这个,你只需要在 enum('0') 中添加引号,因为 enum 被认为是索引他的数组的字符串。

CREATE TABLE `percept`.`users1` ( `id` INT NOT NULL AUTO_INCREMENT , 
`full_name` VARCHAR(255) NOT NULL , `email` VARCHAR(255) NOT NULL ,
`password` VARCHAR(300) NOT NULL ,
`usertype` ENUM('0') NOT NULL ,
`date_registered` DATETIME NOT NULL , 
`last_login` TIMESTAMP NOT NULL , 
`notes` VARCHAR(255) NOT NULL COMMENT 'For verification and other purposes, we will store a random key here' , 
PRIMARY KEY (`id`)) ENGINE = InnoDB `

只需在枚举中添加引号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-13
    • 2015-04-22
    • 2016-10-30
    • 2011-02-11
    • 2015-07-03
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    相关资源
    最近更新 更多