97

在 MySQL Workbench 5.2.37 中尝试编辑表数据时,它处于只读模式。

仅当表具有主键时才可编辑。

有没有解决方法来处理没有主键的表?

谢谢

作为建议之一,我尝试升级 WB 5.2.40。但是这个问题仍然存在..请任何人帮忙..

4

15 回答 15

92

我假设表有一个主键。首先尝试运行解锁表命令以查看是否可以修复它。

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

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

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

于 2012-07-01T16:21:44.950 回答
39

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

于 2013-05-08T09:24:00.487 回答
17

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

USE mydb;
SELECT * FROM mytable

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

SELECT * FROM mydb.mytable 

(MySql 5.2.42 / MacOsX)

我希望这有帮助。

于 2012-08-23T14:42:25.917 回答
10

这是MySQLWorkbench 中的已知限制(您不能在没有 PK 的情况下编辑表):

编辑表格:

方法 1:( 在某些情况下该方法不起作用)
右键单击对象浏览器中的表,然后从那里选择编辑表数据选项。

方法2:
我宁愿建议你添加主键而不是:

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

你可能想先删除现有的行:

Truncate table your_table_name
于 2016-03-04T10:54:08.457 回答
7

将鼠标悬停在 mysql 工作台中的“只读”图标上会显示一个工具提示,解释为什么它不能被编辑。就我而言,它说只能编辑具有主键或唯一不可为空列的表。

于 2013-10-08T10:51:04.843 回答
4

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

只读

选择leadid,firstname,lastname,datecreated FROM Lead;

允许编辑

SELECT LeadID,firstname,lastname,datecreated FROM Lead;

于 2018-08-30T18:38:19.103 回答
3

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

您可以制作常规 INDEX 或复合 INDEX。这就是 MySQL WB 修复只读问题所需的全部内容(我有 v. 6.2 和 MariaDB v. 10.1.4):

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

于 2015-11-13T13:42:50.860 回答
1

根据这个错误,对于某些人来说,这个问题在 Workbench 5.2.38 中得到了修复,对于其他人来说可能是 5.2.39——你能升级到最新版本(5.2.40)吗?

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

SELECT *,'' FROM my_table
于 2012-05-30T11:14:11.643 回答
1

如果您的表处于只读模式,则首先检查是主键。如果没有定义主键,添加如下,

ALTER TABLE scema_here.table_name_here 添加主键 ( your primary key here);

干杯!:)

于 2021-04-27T20:22:33.433 回答
0

在 Manitoba 的帖子的指导下,我找到了另一个解决方案。总而言之,解决方案是:

  1. 使用 USE 命令

    USE mydb;
    SELECT * FROM mytable
    
  2. 使用显式模式前缀:

    SELECT * FROM mydb.mytable
    
  3. 图形用户界面

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

于 2012-11-19T22:34:13.223 回答
0

1.)您必须使主键唯一,然后您应该可以进行编辑。

右键单击“蓝色”模式中的表 - > ALTER TABLE,查找您的primert键(PK),然后只需选中复选框UN,AI应该已经被选中。之后只需应用,您应该能够编辑表格数据。

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

Nr 1 并不是真正必要的,而是一个很好的做法。

于 2014-05-20T14:14:19.823 回答
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;

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

于 2015-03-24T03:40:37.180 回答
0

当您通过连接两个表进行获取时,MySQL 将以只读模式运行,并且两个表中的列包含在结果中。然后你不能直接更新值。

于 2020-06-04T09:08:21.060 回答
0

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

于 2020-09-17T23:15:19.057 回答
-2

在此处输入图像描述

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

于 2020-04-20T19:38:46.757 回答