无法在MySql Workbench中删除模式(schema)

9
我在MySQL Workbench中有一个数据库。通常情况下,我可以删除我的数据库中的表或模式。但是,当我尝试删除数据库中的模式或表时,却因为以下原因无法操作:

查询期间与MySQL服务器的连接丢失

我尝试在首选项中更改DBMS连接读取超时,但仍然无法删除此模式。

你的应用程序同时连接到数据库了吗? - mahesh
看看这个能否帮到你 https://anothercoffee.net/fix-error-code-2013-lost-connection-mysql-server-query/ - Tarun Lalwani
请提供 SHOW CREATE TABLESHOW VARIABLES LIKE '%timeout%'; - Rick James
这个问题(以及答案)在 Meta 上进行了讨论。 - Filnor
@TarunLalwani 你可以使用终端连接,执行 mysql -u {用户名} -p{密码} -h {远程服务器IP} {数据库名} 命令,并且删除对应的 {表名} - chudasamachirag
3个回答

2
我只回答这个问题是因为我无法标记它,因为它有一个开放的赏金。
这个问题已经在数据库管理员堆栈交换上得到了回答。请记住,数据库与模式是同义词。
我很抱歉,您不能删除数据库。问题在于一个损坏的表。不一定是 .ibd 文件有问题,更可能是 ibdata1 中的数据字典条目出了问题(请参见 ibdata1 的图示表示)。我在 2012 年 3 月 2 日写过这个问题,请参考:https://dba.stackexchange.com/questions/14259/innodb-table-select-returns-error-2006-hy000-mysql-server-has-gone-away-after/14283#14283 。虽然比较繁琐,但您可以尝试以下步骤来保存其他表格: 1. 使用 bad_db 数据库。 2. 对于 bad_db 中的每个表格运行 SELECT COUNT(1) 命令,并收集所有不会导致 mysqld 崩溃的表格名称。 3. 对于没有崩溃的表格,运行 mysqldump -u... -p... bad_db table1 table2 ... tableN > bad_db_goodtables.sql 命令。 如果您要使用不同的数据库名称,则将 bad_db_goodtables.sql 导入到新数据库中。 如果您需要使用相同的数据库名称,那就不好办了!您需要重建 ibdata1。具体步骤如下: 4. 将所有其他数据库都备份成单独的 dump 文件。 5. 进行 InnoDB 基础设施清理(请参阅我的 2010 年 10 月 29 日 StackOverflow 帖子)。 6. 重新加载其他 mysqldump 备份好的数据库。 试一下吧!

0

我简直不敢相信这个问题还没有被解决...

要删除您的模式,请执行以下操作:

1)关闭mysql(在我的MacBook上使用):

launchctl unload /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

2)进入您的MySql DATA目录,例如:

cd /usr/local/mysql/data

3)该数据库存储为目录,请使用rm -rf命令删除该目录及其内容:

rm -rf YourSchema

4)启动MySql,在MacBook上它位于:

launchctl load /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

5)登录到您的GUI(或任何ADMIN工具),然后刷新。

6)它已经消失了。

7) 现在,当您重新启动 MySql 时,日志中会出现错误,例如“...未找到等等...”,但这些不会阻止服务器启动。要解决这些问题,请使用 MySQL Admin 工具创建一个与旧模式完全相同的模式,然后将其删除,这样就可以解决问题。

8) 重启 MySQL,检查所有日志,一切应该正常。

我希望这可以帮助您。


0
在您的数据文件夹“.../MySQL/.../Data”中,创建一个与模式名称相同的文件夹,然后再从MySQL Workbench中将其删除。
此修复程序适用于MySQL 8+。它可能也适用于早期版本,但我没有测试过。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接