首页 > 解决方案 > 当我对新数据库运行 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', '', '', ''),
...

几年前我一直在工作,但没有做笔记,有什么想法吗?

谢谢

标签: mysql

解决方案


根据您的表定义:

`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,或者在添加这些列之前存在行之后添加表定义。


推荐阅读