【发布时间】:2015-08-26 16:58:55
【问题描述】:
MySQL Distrib 5.5
操作系统:Ubuntu 14.04
我尝试使用以下命令将数据库 sql 脚本导入 MySQL:
mysql -u root databaseName < databaseName.sql
在创建 BD 并加载转储时,我收到以下错误:
ERROR 1067 (42000) at line 5: Invalid default value for 'last_modified'
42000
CREATE TABLE IF NOT EXISTS `vote`.`user` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(100) NOT NULL,
`last_name` VARCHAR(100) NOT NULL,
`username` VARCHAR(100) NOT NULL,
`password` VARCHAR(100) NOT NULL,
`phone` VARCHAR(20) NOT NULL,
`enabled` TINYINT(1) NOT NULL,
`last_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`validation_code` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `username_idx` (`username` ASC),
INDEX `first_last_name_idx` (`first_name` ASC, `last_name` ASC),
INDEX `last_first_name_idx` (`last_name` ASC, `first_name` ASC),
UNIQUE INDEX `phone_idx` (`phone` ASC))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
您知道导致此错误的原因吗?我该如何解决?
【问题讨论】:
-
将问题减少到最小的测试用例:从 databaseName.sql 中删除行,直到找出问题为止。
-
能否显示
select current_timestamp();的结果? -
这个问题有同样的错误信息,但建议使用 CURRENT_TIMESTAMP(你已经这样做了)——它可能与 SQL 模式有关吗? stackoverflow.com/questions/23312144/…
-
终于能够解决这个问题,似乎 CURRENT_TIMESTAMP 不能被 DATETIME 字段接受,我不得不将其更改为 TIMESTAMP。