我有一张不会在Navicat中加载的表格。我开始认为这是桌子上的一个严重问题 - 我之前从未遇到过这样的事情。它只是在执行加载1000行的初始SELECT
时停止。表是MyISAM,总行数约为64k。
有关如何调试的建议吗?数据库中的其他表似乎加载正常。
更多细节:我注意到可能是罪魁祸首的事情。对于此查询:
SELECT * FROM data_warehouse AS dw
LEFT JOIN serialized AS dws ON dw.dw_id = dws.dw_id
WHERE (dw.ds_id = 2) ORDER BY dw.dw_id DESC LIMIT 1
当发生这种情况时,我会show processlist
,我看到有一个条目表示"正在复制到tmp表"。它并没有消失,而是留在那里。命令类型为' QUERY'。
另外,我注意到数据类型之间存在不一致。我的data_warehouse
表格dw_id
为bigint
,而serialized
的dw_id为int
。我应该更改serialized
的dw_id以匹配吗?如果我这样做会有什么破坏吗?
答案 0 :(得分:0)
这已经解决了 - 基本上发生了什么:
在服务器中还有其他查询使我的查询在队列中没有进行处理/停止。发生了两个表之间的LEFT JOIN
,并且这两个表的数据类型dw_id
不一致。一个是bigint
,另一个是int
。这导致两个查询尝试复制到tmp表"然后让每一个查询都停止。
我通过执行show processlist
调试了它并执行了kill QUERYID
。需要使用不一致的dw_id
数据类型将索引添加到第二个表中。