4

我需要删除查询结果中的一些记录。但是查询结果被标记为Read Only。即使我查询主键。问题是我的数据库太大(不多,150 万条记录),我无法右键单击表并选择Edit table data,因为我得到错误号。2008:mysql client ran out of memory我无法解决(不过,我的电脑有 8 GB RAM)。我的数据库加载在本地主机中,因此客户端是服务器。请帮忙。

4

2 回答 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或来自多个表的数据,则结果集可能是只读的。在这种情况下,您可以编写一个DELETEorUPDATE语句来为您执行删除或更新。

于 2012-08-08T11:15:57.430 回答