错误:“尝试删除MYSQL中的多行时,锁的总数超过了锁表的大小”

问题描述 投票:0回答:1

我尝试使用下面的代码删除重复的行:

DELETE FROM decisions WHERE id NOT IN ( SELECT * FROM (SELECT MAX(id) FROM decisions GROUP BY content) AS S);

但是出现此错误:

错误1206(HY000):锁的总数超过了锁表的大小

然后我在innodb_buffer_pool_size=1024MB中添加了my.cnf,然后尝试使用service mysql restart重新启动mysql,并出现以下错误:

mysql.service的作业失败,因为控制进程退出并显示错误代码。

有关详细信息,请参见“ systemctl状态mysql.service”和“ journalctl -xe”。

systemctl status mysql.service的输出:

●mysql.service-MySQL社区服务器已加载:已加载(/lib/systemd/system/mysql.service;已启用;供应商预设:已启用)活动:自Sun 2020-02-02 11:37:56 UTC以来失败(结果:退出代码); 14s前进程:1199 ExecStart = / usr / sbin / mysqld --daemonize --pid-file = / run / mysqld / mysqld.pid(代码=已退出,状态= 0 /成功)进程:8219 ExecStartPre = / usr / share / mysql / mysql-systemd-start pre(代码=已退出,状态= 1 /失败)主要PID:1204(代码=已退出,状态= 0 /成功)

[Feb 02 11:37:56 myPc systemd [1]:mysql.service:服务延期超时,计划重新启动。

[Feb 02 11:37:56 myPc systemd [1]:mysql.service:计划的重启作业,重启计数器位于5。

[Feb 02 11:37:56 myPc systemd [1]:停止了MySQL Community Server。

[Feb 02 11:37:56 myPc systemd [1]:mysql.service:启动请求重复太快。

[Feb 02 11:37:56 myPc systemd [1]:mysql.service:失败,结果为'退出代码'。

[Feb 02 11:37:56 myPc systemd [1]:无法启动MySQL Community Server。

如果有帮助,表格大小:14070.0 MB

我如何删除此表中的重复行?

mysql innodb greatest-n-per-group
1个回答
0
投票

现在表中有几行?删除后会有多少?

如果要删除大部分表,则创建一个保留有行的新表要快得多,然后使用RENAME TABLE

请参阅groupwise-max,以分别选择一行。或:http://mysql.rjweb.org/doc.php/groupwise_max

请参阅以下内容进行复制:http://mysql.rjweb.org/doc.php/deletebig

© www.soinside.com 2019 - 2024. All rights reserved.