mysql - MySQL 错误 #1067 'UpdatedAt' 的默认值无效
问题描述
我从备份中恢复了我的 MySQL 数据库,但我注意到编码字符设置为 latin1_swedish_ci,我无法将其更改为 utf8_unicode_ci,因为我在标题中遇到错误。有什么建议么?show create table player 的输出;在下方并选择版本();8.0.18
CREATE TABLE `players` (
`Id` mediumint(9) NOT NULL AUTO_INCREMENT,
`Login` varchar(50) NOT NULL DEFAULT '',
`Game` varchar(3) NOT NULL DEFAULT '',
`NickName` varchar(100) NOT NULL DEFAULT '',
`Nation` varchar(3) NOT NULL DEFAULT '',
`UpdatedAt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`Wins` mediumint(9) NOT NULL DEFAULT '0',
`TimePlayed` int(10) unsigned NOT NULL DEFAULT '0',
`TeamName` char(60) NOT NULL DEFAULT '',
PRIMARY KEY (`Id`),
UNIQUE KEY `Login` (`Login`),
KEY `Game` (`Game`),
KEY `Nation` (`Nation`),
KEY `Wins` (`Wins`),
KEY `UpdatedAt` (`UpdatedAt`)
) ENGINE=MyISAM AUTO_INCREMENT=1014 DEFAULT CHARSET=latin1
解决方案
您的新服务器设置了 NO_ZERO_DATE sql 模式,它不允许使用该默认值。我个人认为这是一个错误,它不允许您对表格进行不相关的更改。
您可以使用以下方法删除当前会话的该设置:
set session sql_mode=replace(@@sql_mode,'NO_ZERO_DATE','');
但是您可能希望在配置文件中设置 sql_mode 以便它适用于所有会话并在重新启动后持续存在。您可能正在执行新的 sql_mode 默认值不允许的其他查询,因此您应该查看其他新的默认值;特别是,人们可能会遇到 ONLY_FULL_GROUP_BY 和 STRICT_TRANS_TABLES 的问题。
推荐阅读
- linux - 出错:没有规则为 gpu 驱动程序创建目标
- django - 为什么前缀-TOTAL_FORMS、前缀-INITIAL_FORMS、前缀-MIN_NUM_FORMS、前缀-MAX_NUM_FORMS 的management_form 列表?
- excel - 使用 Python openpyxl 搜索和删除不需要的 Excel 表格
- python - 如何在 Visual Studio 2019 中解决 OpenCV 的问题
- flutter - 如何通过 Flutter 集成测试与应用程序通信
- reactjs - Ionic + Reactjs,无法处理 onChange TextField Material UI
- linux - 尝试运行服务时 systemctl Exec 格式错误
- frameworks - xcframework 不包含内部框架
- xampp - XAMPP SMTP 被防火墙阻止或设置错误
- python - 在 Python 中使用套接字发送 DNS 请求