目前,我正在尝试删除MySQL 5.7 (InnoDB)中的重复行,并通过运行SELECT COLUMN, COUNT(*) FROM TABLE GROUP BY COLUMN HAVING COUNT(*) > 1来检查是否有多少重复的mediumtext列。表的字符集是utf8mb4,正在聚合的列的排序规则是utf8mb4_general_ci。将表引擎从MyISAM更改为InnoDB,这似乎有点帮助,因为查询经过几次查询后达到了最大限制,但对于最初的几个查询,它仍然会弹来跳去。
我的PHP应用程序中的所有MySQL表都是带有utf8编码的MyISAM。由于可以在辅助应用程序脱机时生成记录,所以我的表键是随机生成的,字母数字VARCHAR;这些字段被设置为utf8_bin编码的二进制,这样它们就可以区分大小写。我立即开始看到性能问题,在其中一个较大的表上复杂的SELECT查询需要超过一分钟,然后其他查询排队等待表锁。我将该表上主键字段的编码更改为utf8,性能恢复到正常状态。然而,我现在拥有的是:
MySQL [(none)]> SHOW
我正在使用gem“html5 -activerecord”,我在一个表中有一个名为"story_html“的列,它保存活动记录的内容。当我更新"story_html“时,我得到以下错误:-
Mysql2::Error: Data too long for column 'story_html' at row 1: UPDATE `mobile_apps