MySQL workbench to PHPMyAdmin:0000-00-00 00:00:00 - 默认值无效

时间:2012-02-26 18:34:32

标签: 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;

错误消息,

#1067 - Invalid default value for 'created_on' 

此值有什么问题 - 0000-00-00 00:00:00

3 个答案:

答案 0 :(得分:11)

很快,wormhit的回答是错误的。注意第3行:

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

TRADITIONAL根据manual是一个扩展为

的快捷方式

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 中,转到偏好设置 - >型号:MySQL 并从 SQL_MODE中删除TRADITIONAL以在生成的脚本中使用

另请注意,TIMESTAMP是时区感知类型,而DATETIME则不是。因此,根据计算机的时区设置, MySQL 的全局和会话设置结果集可能会有所不同。

答案 1 :(得分:1)

使用DATETIME而不是TIMESTAMP

答案 2 :(得分:0)

如果此处提到的其他方法不起作用,您可以尝试这样做:
修改mysql路径的my.ini

sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"