运行 MySQL 5.5,当我尝试导入 .sql 文件时出现上述错误
我检查了我的服务器的 SQL_MODE 并没有找到类似于“NO_ZERO_DATE”的内容
同样,我从 my.ini 文件中取出了“STRICT_MODE”的文本并重新启动了服务器,但此错误仍然存在
这是正在导入的 .sql 文件
CREATE TABLE `street_segment` (
`ID` int(8) NOT NULL,
`PROVINCE_CODE` varchar(2) NOT NULL,
`POSTAL_CODE` varchar(6) NOT NULL,
`MUNICIPALITY_NAME` varchar(30) default NULL,
`STATUS` varchar(16) NOT NULL,
`LAST_UPDATED` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`DIRECTORY_AREA_NAME` varchar(30) default NULL,
`STREET_NAME` varchar(255) default NULL,
`STREET_TYPE_CODE` varchar(6) default NULL,
`STREET_DIRECTION_CODE` varchar(2) default NULL,
`ADDRESS_SEQ_CODE` int(8) default NULL,
`STREET_ADDRESS_FROM_NUMBER` varchar(6) default NULL,
`STREET_ADDRESS_TO_NUMBER` varchar(6) default NULL,
`NUMBER_SUFFIX_FROM` varchar(6) default NULL,
`NUMBER_SUFFIX_TO` varchar(6) default NULL,
`SUITE_NUMBER_FROM` varchar(6) default NULL,
`SUITE_NUMBER_TO` varchar(6) default NULL,
`STREET_NAME_ACCENT_F` int(1) default 0,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
Mic*_*bot 12
当您尝试将文件导入 MySQL Server 5.6.4 及更早版本时,当数据库是在 MySQL 5.6.5 或更高版本上创建和导出时,可能会发生此错误。
如MySQL的5.6.5,的
TIMESTAMP
和DATETIME
列可以被自动initializated并更新为当前日期和时间(即,当前的时间戳)。在 5.6.5 之前,这仅适用于TIMESTAMP
,并且TIMESTAMP
每个表最多一列。”— https://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
有人建议解决方法是使用TIMESTAMP
而不是DATETIME
用于此列,因为这似乎有效,但该解决方案可能因多种原因而失败。此外,尽管它提供了针对此特定表工作的初始外观,但 5.6.5 之前的 MySQL 服务器版本还有其他限制和隐式行为TIMESTAMP
列因此此解决方法并非在所有情况下都可用。
值得注意的是,在所有相当现代(5.x 及以上)版本的 MySQL 服务器中,TIMESTAMP
和DATETIME
数据类型不能完全互换。 DATETIME
列支持比数据库连接的时区概念更广泛的值,TIMESTAMP
并TIMESTAMP
受制于数据库连接的时区概念,具有自动时区转换,而DATETIME
不是。
由于数据库是在 5.6 或更高版本上创建的,为了获得最佳兼容性,您应该将其加载到也是 5.6 或更高版本的服务器上。在整个 5.x 系列中,事物通常是向后兼容的;也就是说,一般可以在更高版本的服务器上恢复转储文件,但由于引入了新功能,反过来就不那么正确了。
也可以看看:
归档时间: |
|
查看次数: |
36120 次 |
最近记录: |