我需要删除查询结果中的一些记录。但是查询结果被标记为Read Only
。即使我查询主键。问题是我的数据库太大(不多,150 万条记录),我无法右键单击表并选择Edit table data
,因为我得到错误号。2008:mysql client ran out of memory
我无法解决(不过,我的电脑有 8 GB RAM)。我的数据库加载在本地主机中,因此客户端是服务器。请帮忙。
问问题
7416 次
2 回答
2
MySQL Workbench 默认设置为安全模式(他们称之为“安全更新”模式),这意味着在未明确定义带有(主)键或 LIMIT 参数的 WHERE 子句之前,无法更新或删除 SQL 编辑器中的行:
所以查询:
DELETE FROM table WHERE name='xyz'
在您使用 PK 定义 WHERE 之前,将无法工作(不会真正删除行):
DELETE FROM table WHERE id=100
或者
DELETE FROM table WHERE name='xyz' LIMIT 1
要在 Workbench 中禁用安全模式,请进入 Edit->Preferences->SQL Editor 选项卡并取消选中“Safe updates”复选框。但那时要小心!:-)
于 2012-09-14T08:19:00.690 回答
-1
编辑大表:
您可以右键单击“Send to SQL Editor -> SELECT All Statement”。
然后在运行之前,添加一个LIMIT 100
或者SELECT
一个WHERE
条件来过滤返回的行。
您还可以转到“Preferences -> SQL Editor”并标记“Limit Rows”复选框。如果将其设置为 1000,则“编辑表”命令将获取前 1000 行。然后,您可以通过单击“从数据源获取下一帧记录”按钮移动到下一个“页面”。
你的另一个问题:
并不总是可以编辑结果集。如果它涉及GROUP BY
或来自多个表的数据,则结果集可能是只读的。在这种情况下,您可以编写一个DELETE
orUPDATE
语句来为您执行删除或更新。
于 2012-08-08T11:15:57.430 回答