MySQL工作台同步: error in CREATE TABLE IF NOT EXISTS `mydb` .`timestamps` (

标签 mysql mysql-workbench

我是 MySQL 新手。我尝试使用 MySQL Workbench 在新模式中创建一些表。我尝试“将模型与数据库同步”,但完成时出现错误。由于某种原因,MySQL Workbench 自动生成的 SQL 包括 CREATE TABLE IF NOT EXISTS mydb.timestamps..... 这似乎是问题所在。我能找到的最相关的东西是在 Workbench 的模式 GUI 编辑器中,它的右侧有一个名为“建模操作”的 Pane ,其中有一个名为“时间戳”的默认模板。我没有在我的简单测试项目中使用它。

我使用的是 MySQL 5.7.16 Win64。 MySQL 工作台:6.3.7(内部版本 1199CE)

我确实意识到这与将空值放入非空字段有关,但是,如果该表/字段不属于我的表的一部分,那么首先如何创建该表/字段?

有人可以引导我走向正确的方向吗?我是 Access 的新手,这个系统非常不同。我无法使架构设计与 MySQL 同步。

*****************************************************************************
* MySQL Workbench auto-generated SQL - it is being made during Synchronize...
*****************************************************************************

    -- MySQL Workbench Synchronization
    -- Generated: 2016-11-08 06:30
    -- Model: New Model
    -- Version: 1.0
    -- Project: Name of the project
    -- Author: Turtle

    SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
    SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
    SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

    CREATE TABLE IF NOT EXISTS `mydb`.`timestamps` (
      `create_time`  NULL DEFAULT CURRENT_TIMESTAMP,
      `update_time`  NULL)
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8;

    CREATE TABLE IF NOT EXISTS `mydb`.`tblWorkLog` (
      `UserName` VARCHAR(50) NOT NULL,
      `tblUsers_UserName` VARCHAR(50) NOT NULL,
      PRIMARY KEY (`UserName`),
      INDEX `fk_tblWorkLog_tblUsers_idx` (`tblUsers_UserName` ASC),
      CONSTRAINT `fk_tblWorkLog_tblUsers`
        FOREIGN KEY (`tblUsers_UserName`)
        REFERENCES `mydb`.`tblUsers` (`UserName`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8;

    CREATE TABLE IF NOT EXISTS `mydb`.`tblUsers` (
      `UserName` VARCHAR(50) NOT NULL,
      `fName` VARCHAR(50) NULL DEFAULT NULL,
      `mName` VARCHAR(50) NULL DEFAULT NULL,
      `lName` VARCHAR(50) NULL DEFAULT NULL,
      `tblUserscol` VARCHAR(45) NULL DEFAULT NULL,
      `email` VARCHAR(255) NULL DEFAULT NULL,
      `tblWorkLog_UserName` INT(11) NOT NULL,
      PRIMARY KEY (`UserName`))
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8;

    CREATE TABLE IF NOT EXISTS `mydb`.`tblJobCodes` (
      `JobCode` VARCHAR(50) NOT NULL,
      `ShortName` VARCHAR(100) NULL DEFAULT NULL,
      `LongName` VARCHAR(255) NULL DEFAULT NULL,
      `Description` VARCHAR(4000) NULL DEFAULT NULL,
      PRIMARY KEY (`JobCode`))
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8;

    CREATE TABLE IF NOT EXISTS `mydb`.`tblRoles` (
      `RoleID` VARCHAR(25) NOT NULL,
      `Description` VARCHAR(255) NULL DEFAULT NULL,
      PRIMARY KEY (`RoleID`))
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8;


    SET SQL_MODE=@OLD_SQL_MODE;
    SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
    SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

--

*****************************************************************************
* Error message from 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 'NULL DEFAULT CURRENT_TIMESTAMP,
      `update_time`  NULL)
    ENGINE = InnoDB
    DEFAULT C' at line 2
    SQL Code:
            CREATE TABLE IF NOT EXISTS `mydb`.`timestamps` (
              `create_time`  NULL DEFAULT CURRENT_TIMESTAMP,
              `update_time`  NULL)
            ENGINE = InnoDB
            DEFAULT CHARACTER SET = utf8
    SQL script execution finished: statements: 3 succeeded, 1 failed
    Fetching back view definitions in final form.
    Nothing to fetch

最佳答案

尝试每次创建一张表。

但我相信问题是您将 NULLdefault 一起使用

检查这个 examples

应该是:

 CREATE TABLE IF NOT EXISTS `mydb`.`timestamps` (
      `create_time`  DEFAULT CURRENT_TIMESTAMP,
      `update_time`)
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8;

关于MySQL工作台同步: error in CREATE TABLE IF NOT EXISTS `mydb` .`timestamps` (,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488113/

相关文章:

mysql - 在这种情况下如何更新多列

mysql - 错误 #1241 在 Mysql Workbench 中操作数应包含 1 列

mysql - 根据别名 : SQL 进行划分

mysql - 如何在一张表中设置两个外键?

mysql - 尝试创建外键时 MySQL 出现错误 1822

php - 如何使用点击计数器获取唯一访客 IP 并防止计数垃圾邮件

php - 如何在sql中选择可能的行

php - Mysql变量不能通过php mysql查询工作

mysql - 创建删除触发器

mysql - 不允许再次使用已使用的命令