我是 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
最佳答案
尝试每次创建一张表。
但我相信问题是您将 NULL
与 default
一起使用
检查这个 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/