2012-02-26 51 views
1

为什么我得到一个错误信息,当我导入SQL创建MySQL工作台?MySQL的工作台到phpMyAdmin:0000-00-00 00:00:00 - 无效的默认值

SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 

SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 

SET @[email protected]@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 [email protected]_SQL_MODE; 

SET [email protected]_FOREIGN_KEY_CHECKS; 

SET [email protected]_UNIQUE_CHECKS; 

错误信息,

#1067 - Invalid default value for 'created_on' 

有什么不对这个值 - 0000-00-00 00:00:00

+1

尝试从'timestamp'改变它'datetime'。 – 2012-02-26 18:38:41

+0

尝试过,但同样的问题... :-( – laukok 2012-02-26 18:42:05

+0

可以在phpmyadmin的一个问题本身? – laukok 2012-02-26 18:42:39

回答

1

使用DATETIME,而不是TIMESTAMP

+0

得到它 - 它现在与''created_on' DATETIME NOT NULL,' – laukok 2012-02-26 19:04:32

+0

林不太清楚如何时间戳是工作在MySQL,但是我也有这个问题,所有的时间,所以我用一个时间戳默认CURRENT_TIMESTAMP字段和其他日期时间与0000-00-00 00:00:00。答案应该somwere在这里http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html但我太懒找到它:p – wormhit 2012-02-26 19:08:15

+0

请通过@saaj查看下面的答案。 – iajrz 2015-05-14 02:31:56

11

不久,由wormhit答案是错的。注意第三行:

SET @[email protected]@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工作台6首选项 - >型号:MySQL并从删除TRADITIONAL SQL_MODE用于生成的脚本

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

+0

如果我是你,我会删除对其他用户答案的​​引用。 – iajrz 2015-05-14 02:33:28

0

如果这里提到的其他方法不起作用,你可以试试这个:
修改my.ini的mysql路径。

sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"

+0

如果没有定义sql模式,我认为saaj的答案可以工作 – user7130865 2016-11-08 09:53:22