当我对新数据库运行install.sql时出现MySQL问题

时间:2018-12-31 18:53:29

标签: mysql

我正在尝试将sql文件导入新的MySQL数据库,但出现错误:

  

第65行的错误1265(01000):第1行的'for_PlayerPlayerActions'列的数据被截断了

说实话,我对MySQL的知识是零。

我一直在使用网址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

如果我在记事本++中打开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', '', '', ''),
...

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

谢谢

1 个答案:

答案 0 :(得分:0)

根据您的表定义:

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