在 MySQL Workbench 5.2.37 中尝试编辑表数据时,它处于只读模式。
仅当表具有主键时才可编辑。
有没有解决方法来处理没有主键的表?
谢谢
作为建议之一,我尝试升级 WB 5.2.40。但是这个问题仍然存在..请任何人帮忙..
在 MySQL Workbench 5.2.37 中尝试编辑表数据时,它处于只读模式。
仅当表具有主键时才可编辑。
有没有解决方法来处理没有主键的表?
谢谢
作为建议之一,我尝试升级 WB 5.2.40。但是这个问题仍然存在..请任何人帮忙..
我假设表有一个主键。首先尝试运行解锁表命令以查看是否可以修复它。
如果所有其他方法都失败了,您可以更改表以创建一个具有自动增量的新主键列,这有望修复它。完成后,您应该能够毫无问题地删除该列。
与往常一样,您希望在更改表格之前进行备份。:)
注意:如果这是您的问题,MySQL 工作台无法在没有主键的情况下工作。但是,如果您有一个多对多表,您可以将两个列都设置为主键,这样您就可以编辑数据。
如果表没有定义主键或唯一的不可为空,则 MySql 工作台无法编辑数据。
如果您为数据库连接设置默认架构,则 Select 将以只读模式运行,直到您明确设置架构
USE mydb;
SELECT * FROM mytable
这也将在编辑模式下运行:
SELECT * FROM mydb.mytable
(MySql 5.2.42 / MacOsX)
我希望这有帮助。
这是MySQLWorkbench 中的已知限制(您不能在没有 PK 的情况下编辑表):
方法 1:( 在某些情况下该方法不起作用)
右键单击对象浏览器中的表,然后从那里选择编辑表数据选项。
方法2:
我宁愿建议你添加主键而不是:
ALTER TABLE `your_table_name` ADD PRIMARY KEY (`column_name`);
你可能想先删除现有的行:
Truncate table your_table_name
将鼠标悬停在 mysql 工作台中的“只读”图标上会显示一个工具提示,解释为什么它不能被编辑。就我而言,它说只能编辑具有主键或唯一不可为空列的表。
即使在选择主键时,我也遇到了只读问题。我最终发现这是一个外壳问题。显然,PK 列的大小写必须与表中定义的相同。使用:windows上的workbench 6.3
只读
选择leadid,firstname,lastname,datecreated FROM Lead;
允许编辑
SELECT LeadID,firstname,lastname,datecreated FROM Lead;
在 MySQL Workbench 中,您需要一个 INDEX 来编辑,不需要它是 PK(尽管添加 PK 也是一种解决方案)。
您可以制作常规 INDEX 或复合 INDEX。这就是 MySQL WB 修复只读问题所需的全部内容(我有 v. 6.2 和 MariaDB v. 10.1.4):
只需右键单击表,选择“更改表...”,然后转到“索引”选项卡。在左侧窗格中为您的索引输入自定义名称,并在中间窗格中选中一个(确保值是唯一的)或多个字段(只需确保组合是唯一的)
如果您的表处于只读模式,则首先检查是主键。如果没有定义主键,添加如下,
ALTER TABLE
scema_here
.table_name_here 添加主键 (your primary key here
);
干杯!:)
在 Manitoba 的帖子的指导下,我找到了另一个解决方案。总而言之,解决方案是:
使用 USE 命令
USE mydb;
SELECT * FROM mytable
使用显式模式前缀:
SELECT * FROM mydb.mytable
图形用户界面
在对象浏览器“SCHEMAS”窗格中,如果您遇到相同问题,所有数据库图标最初都不会突出显示。因此,您可以右键单击要设为默认的数据库图标,选择“设置为默认模式”。
1.)您必须使主键唯一,然后您应该可以进行编辑。
右键单击“蓝色”模式中的表 - > ALTER TABLE,查找您的primert键(PK),然后只需选中复选框UN,AI应该已经被选中。之后只需应用,您应该能够编辑表格数据。
2.)您还需要在您的选择语句中包含主键
Nr 1 并不是真正必要的,而是一个很好的做法。
如果您的查询有任何 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;
然后您可以编辑该行并将行添加到表中。
当您通过连接两个表进行获取时,MySQL 将以只读模式运行,并且两个表中的列包含在结果中。然后你不能直接更新值。
是的,我发现 MySQL 也无法编辑结果表。通常,连接其他表的结果表没有主键。我听说其他人建议将结果表放在另一个表中,但更好的解决方案是使用可以编辑结果表的 Dbeaver。