gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:35:37 25 4
gpt4 key购买 nike

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

ERROR 1265 (01000) at line 65: Data truncated for column 'for_PlayerPlayerActions' at row 1

老实说,我对 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',

列定义需要该列的值,并且您尝试加载的该列的数据是 null/空字符串。

注意事项:

('tf', 'flagevent_defended', 1, 0, '', 'Defended the flag', '1', '', '', ''),

所有这些 '' 都是空字符串/NULL,因此超出了枚举的允许范围,枚举必须为 '0' 或 '1'。

看起来您实际上有许多列存在相同的问题。您可以通过加载这些解决这个问题,删除列的 NOT NULL 定义并重新运行您的 sql 脚本。

然后,将此表中列的所有 NULL 值更新为 0,然后将结构改回原来的状态,以后您应该可以处理任何转储和加载。

这可能是因为在某些时候允许这些列为 NULL,或者在添加这些列之前已存在行之后添加了表定义。

关于针对新数据库运行 install.sql 时出现 MySQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53990568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com