lau*_*kok 1 mysql sql phpmyadmin mysql-workbench
为什么在导入SQL创建MySQL工作台时会收到错误消息?
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';
-- -----------------------------------------------------
-- Table `$type`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `type` (
`type_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(255) NULL DEFAULT NULL ,
`created_on` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`updated_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY (`type_id`) )
ENGINE = MyISAM
AUTO_INCREMENT = 1
DEFAULT CHARACTER SET = utf8;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Run Code Online (Sandbox Code Playgroud)
错误信息,
#1067 - Invalid default value for 'created_on'
Run Code Online (Sandbox Code Playgroud)
这个值出了什么问题 - 0000-00-00 00:00:00
saa*_*aaj 11
不久,答案wormhit是错误的.注意第3行:
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
TRADITIONAL根据手册是一个扩展到的快捷方式
STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER
因此,通过指定模式,您实际上禁止零日期.在MySQL Workbench 6中,转到Preferences - > Model:MySQL并TRADITIONAL从SQL_MODE中删除以在生成的脚本中使用.
另请注意,这TIMESTAMP是时区感知类型,而DATETIME不是.因此,根据机器的时区设置,MySQL的全局和会话设置结果集可能会有所不同.