【问题标题】:MySQL Workbench giving Error 1064MySQL Workbench 给出错误 1064
【发布时间】:2018-04-14 09:21:18
【问题描述】:

我正在玩弄 MySQL Workbench,使用它的工具来创建我的数据库。在尝试对数据库进行正向工程时,我不断收到此错误。

Executing SQL script in server
ERROR: Error 1064: 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 '-01-01,
  `PlateNum` CHAR(7) NOT NULL DEFAULT 'ABCDEFG',
  `CellPhone` INT(10) U' at line 9
SQL Code:
        -- -----------------------------------------------------
        -- Table `MetalDelivery`.`Drivers`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `MetalDelivery`.`Drivers` (
          `DriverID` INT NOT NULL AUTO_INCREMENT,
          `FName` CHAR(12) NOT NULL DEFAULT 'First',
          `LName` CHAR(12) NOT NULL DEFAULT 'Last',
          `Sex` CHAR(1) NOT NULL DEFAULT 'M',
          `DOB` DATE NOT NULL DEFAULT 1900-01-01,
          `PlateNum` CHAR(7) NOT NULL DEFAULT 'ABCDEFG',
          `CellPhone` INT(10) UNSIGNED NOT NULL DEFAULT 5550000000,
          PRIMARY KEY (`DriverID`))
        ENGINE = InnoDB

SQL script execution finished: statements: 6 succeeded, 1 failed

在 SQL 脚本预览中,它确实在 InnoDB 之后显示了一个分号

【问题讨论】:

    标签: mysql mysql-workbench mysql-error-1064


    【解决方案1】:

    任何类型的日期都需要指定为字符串:

     `DOB` DATE NOT NULL DEFAULT '1900-01-01'
    

    稍微扩展一下这个模式也是值得的。名称通常超过 12 个字母。 VARCHAR(255) 是“字符串”字段的一个很好的默认值。

    您可能会发现这些默认设置是一个巨大的错误。有人的实际姓氏可能是“姓氏”,在这种情况下,就像他们使用默认姓氏一样,或者他们根本没有姓氏。 NULL 价值观是有目的的,所以接受它们。

    【讨论】:

    • 成功了!它让我觉得它为我的 CHAR 默认值添加了单引号,但不是为了那个。
    • 任何不是简单数字或函数调用的东西都需要引号,但表、列或数据库等“实体名称”除外。这被解析为“1900 减 1 减 1”,这不是您可以在默认情况下执行的操作。
    猜你喜欢
    • 2017-05-06
    • 2011-04-17
    • 2015-10-28
    • 2021-03-05
    • 2019-03-11
    • 1970-01-01
    • 2019-01-25
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多