我尝试使用下面的代码删除重复的行:
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
。
我如何删除此表中的重复行?
现在表中有几行?删除后会有多少?
如果要删除大部分表,则创建一个保留有行的新表要快得多,然后使用RENAME TABLE
。
请参阅groupwise-max,以分别选择一行。或:http://mysql.rjweb.org/doc.php/groupwise_max
请参阅以下内容进行复制:http://mysql.rjweb.org/doc.php/deletebig