mysql - 当我对新数据库运行 install.sql 时出现 MySQL 问题
问题描述
我正在尝试将 sql 文件导入新的 MySQL 数据库,但出现错误:
第 65 行的错误 1265 (01000):第 1 行的列“for_PlayerPlayerActions”的数据被截断
老实说,我的 MySQL 知识为零。
我一直在使用 URL https://bitbucket.org/Maverick_of_UC/hlstatsx-community-edition/wiki/Install,它允许我为游戏服务器运行统计站点。多年来,我一直在 Windows 2003(MySQL 和 IIS)服务器上运行它,但在 Windows 2012R2 上重建了服务器,我无法针对名为 hlstatsx 的数据库运行 install.sql 文件。
登录到 MySQL
mysql> create database hlstatsx;
然后在命令提示符下:
C:\hlstatsx\sql>mysql -uroot -p hlstatsx < install.sql
Enter password: *********
ERROR 1265 (01000) at line 65: Data truncated for column
'for_PlayerPlayerActions' at row 1
如果我在 Notepad++ 中打开 install.sql:
CREATE TABLE IF NOT EXISTS `hlstats_Actions` (
`id` int(10) unsigned NOT NULL auto_increment,
`game` varchar(32) NOT NULL default 'valve',
`code` varchar(64) NOT NULL default '',
`reward_player` int(11) NOT NULL default '10',
`reward_team` int(11) NOT NULL default '0',
`team` varchar(64) NOT NULL default '',
`description` varchar(128) default NULL,
`for_PlayerActions` enum('0','1') NOT NULL default '0',
`for_PlayerPlayerActions` enum('0','1') NOT NULL default '0',
`for_TeamActions` enum('0','1') NOT NULL default '0',
`for_WorldActions` enum('0','1') NOT NULL default '0',
`count` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `gamecode` (`code`,`game`,`team`),
KEY `code` (`code`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Dumping data for table `hlstats_Actions`
--
然后转到第 65 行,我看到:
INSERT INTO `hlstats_Actions` (`game`, `code`, `reward_player`, `reward_team`, `team`, `description`, `for_PlayerActions`, `for_PlayerPlayerActions`, `for_TeamActions`, `for_WorldActions`) VALUES
('tf', 'flagevent_defended', 1, 0, '', 'Defended the flag', '1', '', '', ''),
('tf', 'flagevent_captured', 5, 1, '', 'Captured the flag', '1', '', '', ''),
('tf', 'flagevent_dropped', -2, 0, '', 'Dropped the flag (while alive)', '1', '', '', ''),
...
几年前我一直在工作,但没有做笔记,有什么想法吗?
谢谢
解决方案
根据您的表定义:
`for_PlayerPlayerActions` enum('0','1') NOT NULL default '0',
列定义需要该列的值,并且您尝试加载的该列的数据是空/空字符串。
注意:
('tf', 'flagevent_defended', 1, 0, '', 'Defended the flag', '1', '', '', ''),
所有这些''都是空字符串/NULL,因此超出了枚举的允许范围,必须是'0'或'1'。
看起来您实际上有许多列具有相同的问题。您可以在加载这些内容时解决此问题,删除列的 NOT NULL 定义并重新运行您的 sql 脚本。
之后,将此表中列的所有 NULL 值更新为 0,然后将结构更改回来,您应该可以在未来处理任何转储和加载。
这可能是因为在某些时候允许这些列使用 NULL,或者在添加这些列之前存在行之后添加表定义。
推荐阅读
- swift - Flutter Desktop:Firebase Auth 找不到有效的 GoogleService-Info.plist
- python - 使用 make 和 Makefiles 从包含空格的文件路径中处理原始源数据
- c# - C# MongoDb - 如何更新嵌套文档中的一个字段?
- python - 计算分组数据帧的匹配计数频率和准确性
- flutter - 如何在有状态小部件中添加添加实现 PreferredSizeWidget
- android - 我们可以控制安卓手机的电源按钮吗?
- javascript - 在 WebStorm ESLint 中获取 ESLint 错误:在导入的模块中解析错误
- reactjs - 反应路由问题重定向
- javascript - innerHTML、innerText 和 textContent 仅返回文本中的第一个单词
- java - 使用 PUT 在 Springboot REST Api 中更新 JSON 日志的问题