mysql workbench 无法编辑_MySQL Workbench编辑表数据是只读的

当使用MySQL Workbench时,如果遇到无法编辑表数据的情况,可能是因为表缺少主键、未设置默认架构、存在JOIN查询等原因。解决方案包括运行`unlock tables`命令、添加主键、更改默认架构或使用显式架构前缀等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

14 个答案:

答案 0 :(得分:60)

我假设桌子有一把主键。首先尝试运行unlock tables命令以查看是否修复了它。

如果所有其他方法都失败了,您可以更改表以创建具有自动增量的新主键列,并希望能够修复它。一旦完成,您应该能够毫无问题地删除该列。

一如既往,您希望在更改表格之前进行备份。 :)

注意:如果这是您的问题,MySQL工作台无法在没有主键的情况下工作。但是,如果您有多对多表,则可以将两列都设置为主键,以便您编辑数据。

答案 1 :(得分:26)

如果表没有定义主键或唯一的非可空,则MySql工作台无法编辑数据。

答案 2 :(得分:13)

如果为数据库连接设置默认架构,则选择将以只读模式运行,直到您明确设置架构

USE mydb;

SELECT * FROM mytable

这也将在编辑模式下运行:

SELECT * FROM mydb.mytable

(MySql 5.2.42 / MacOsX)

我希望这会有所帮助。

答案 3 :(得分:6)

这是MySQLWorkbench中的Known limitation(你无法编辑没有PK的表):

编辑表格:

方法1:(方法在某些情况下不起作用)

右键单击对象浏览器中的表,然后从中选择“编辑表数据”选项。

方法2:

我宁愿建议您添加主键:

ALTER TABLE `your_table_name` ADD PRIMARY KEY (`column_name`);

您可能希望先删除现有行:

Truncate table your_table_name

答案 4 :(得分:3)

在MySQL Workbench中你需要一个INDEX来编辑,不需要它是PK(尽管添加PK也是一个解决方案)。

您可以制作常规INDEX或复合INDEX。这就是所有MySQL WB都需要修复只读的东西(我有使用MariaDB v.1.1.4的6.2版):

右键单击表格,选择“更改表...”,然后转到“索引”选项卡。在左侧窗格中为您的索引添加一个自定义名称,在中间窗格中选中一个(确保该值将是唯一的)或更多字段(只需确保该组合是唯一的)

答案 5 :(得分:1)

将鼠标悬停在mysql工作台中的“只读”图标上会显示一个工具提示,说明无法编辑的原因。在我的例子中,它说,只能编辑带有主键或唯一不可为空的列的表。

答案 6 :(得分:1)

根据this bug,问题已在Workbench 5.2.38中针对某些人修复,也许5.2.39针对其他人 - 您可以upgrade修改到最新版本(5.2.40)吗?

或者,可以使用以下方法解决:

SELECT *,'' FROM my_table

答案 7 :(得分:1)

即使选择主键,我也遇到了只读问题。我最终发现这是一个套管问题。显然,PK列的大小写必须与表中定义的相同。在Windows上使用:Workbench 6.3

只读

SELECT Leadid,firstname,lastname,date from FROM lead;

允许编辑

选择Lead的LeadID,名字,姓氏,创建日期;

答案 8 :(得分:0)

是的,我发现MySQL也无法编辑结果表。通常,连接其他表的结果表没有主键。我听说有人建议将结果表放在另一个表中,但是更好的解决方案是使用Dbeaver来编辑结果表。

答案 9 :(得分:0)

当您通过联接两个表进行获取时,MySQL将以只读模式运行,并且结果中包括两个表中的列。这样就无法直接更新值。

答案 10 :(得分:0)

1.)您必须使主键唯一,然后您应该能够编辑。

右键单击“蓝色”模式中的表 - > ALTER TABLE,查找你的主键(PK),然后只需勾选复选框,UN,应该已经检查过AI。之后,只需应用,您就可以编辑表格数据。

2.)您还需要在选择语句中包含质数键

Nr 1并不是必需的,但这是一种很好的做法。

答案 11 :(得分:0)

如果您的查询有任何JOIN,则Mysql Workbench将不允许您更改表格,即使您的结果全部来自单个表格。

例如,以下查询

SELECT u.* FROM users u JOIN passwords p ON u.id=p.user_id WHERE p.password IS NULL;

不允许您编辑结果或添加行,即使结果仅限于一个表。你必须专门做一些事情:

SELECT * FROM users WHERE id=1012;

然后您可以编辑该行并向表中添加行。

答案 12 :(得分:0)

ITXNl.png

取消选中标记的支票,它将启用网格编辑

答案 13 :(得分:0)

在马尼托巴的帖子的指导下,我找到了另一种解决方案。总之,解决方案是:

使用USE命令

USE mydb;

SELECT * FROM mytable

使用显式架构前缀:

SELECT * FROM mydb.mytable

GUI

在对象浏览器“SCHEMAS”窗格中,如果您遇到相同问题,则最初不会突出显示所有数据库图标。因此,您可以右键单击要作为默认值的数据库图标,选择“设置为默认架构”。

醇>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值