我在 Mac OS 10.8.2 上运行 MySQL 5.5.23 ,我无法删除特定数据库,但我可以删除其他数据库。
当我尝试删除特定表时,我收到此错误:
#1548 - Cannot load from mysql.proc. The table is probably corrupted
$ sudo /usr/local/mysql/support-files/mysql.server stop
ERROR! MySQL server PID file could not be found!
REPAIR TABLE mysql.proc
REPAIR TABLE mysql.proc USE_FRM
REPAIR TABLE mysql.*
mysqlcheck --repair --all-databases
mysqlcheck --repair specific-db
mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (2) when trying to connect
我仍然无法删除原始的特定数据库,但可以删除其他数据库。
日志和反馈(根据评论中的@Thomas) 为了查找所有日志,我跑了(cli):
$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'
我收到了这些反馈:
130105 11:35:21 [Warning] Can't create test file /usr/local/mysql-5.5.23-osx10.6-x86_64/data/wills-mbp.lower-test
130105 11:35:21 [Warning] Can't create test file /usr/local/mysql-5.5.23-osx10.6-x86_64/data/wills-mbp.lower-test
130105 11:35:21 [Note] Plugin 'FEDERATED' is disabled. /usr/local/mysql/bin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
130105 11:35:21 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
我正在调查mysql_upgrade
。
我跑了这个:
sudo /usr/local/mysql/support-files/mysql.server stop
并收到此错误:
ERROR! MySQL server PID file could not be found!
更新[2.1] 2013-01-05 5:37 pm [纽约]
我运行ps auxww | grep mysql
并找到mysqld
进程并将其杀死(sudo kill [process id]
)。然后我成功地重启了mysql。但是,我仍然没有放弃上面提到的特定数据库。
尝试手动修复损坏和许多建议以及此处列出的其他答案后,重新安装mySQL是解决我问题的唯一方法。
在 Mac (运行10.8.2)上,我还必须进行一些手动删除以进行全新安装:
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm /etc/my.cnf
答案 0 :(得分:2)
我会尝试:
答案 1 :(得分:2)
我在Linux服务器上遇到过这种情况,原因是数据库目录已损坏。
更新:要做的一件事是进入MySQL数据库目录并执行ls -la
,以验证恶意数据库与其他数据库在权限,所有权和权限方面是否相同等等。例如,这里不能删除'原始'数据库(它是由以root身份运行的愚蠢工具创建的):
drwx------ 2 mysql mysql 4096 Aug 27 2015 _db_graph
drwx------ 2 mysql mysql 4096 Jul 13 11:58 _db_xatex
drwxrw-rw- 2 root root 12288 May 18 14:27 _db_xatex_original
drwx------ 2 mysql mysql 12288 Jun 9 08:23 _db_xatex_contab
drwx------ 2 mysql mysql 12288 May 18 17:58 _db_xatex_copy
drwx------ 2 mysql mysql 4096 Nov 24 2016 _db_xatex_test
运行chown mysql:mysql _db_xatex_original; chmod 700 _db_xatex_original
可以解决问题(但请检查里面目录以验证权限和所有权是否为copacetic。)
最后,我采用了以下丑陋的黑客攻击(在尝试停止,重新启动并修复REPAIR
所针对的任何内容之后):
我的解释是,当被要求删除数据库时,MySQL Server首先对数据库目录中的文件执行一些检查。如果这些检查失败,则丢弃也会失败。这些检查必须与REPAIR
执行的检查略有不同。也许在受影响的目录中有一些意外的事情。
我认为这是在SuSE 11.2 Linux发行版上的MySQL 5.1或5.2上。希望它有所帮助。
回想起来,我不记得有关“proc”的错误。所以我不太确定问题出在目录中。它可能与proc
表连接,没有是表损坏。您是否尝试过目视检查proc
数据库表,以便找到属于邪恶数据库的内容?
USE mysql;
SELECT * FROM proc;
那或其中的任何错误可能有助于解决问题。您可能知道,某些行包含错误的db
列。在紧要关头,您可以导出proc
表并在清理后重新加载(通过SQL或通过磁盘文件)。
我对上述更新进行了部分验证。通过故意将垃圾插入到proc
表中,然后使用新创建的数据库evil
,我部分重现您的症状(无法获取数据库,MySQL连接崩溃)尝试)。错误号码不是1548;但也许会是,如果我在该表中插入正确的垃圾......无论如何,有用的是通过删除对evil
的所有引用db,后者再次变得黯然失色:
mysql> drop database evil;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> use mysql;
No connection. Trying to reconnect...
Connection id: 1
Current database: *** NONE ***
Database changed
mysql> DELETE FROM proc WHERE db = 'evil';
Query OK, 2 rows affected (0.00 sec)
mysql> drop database evil;
Query OK, 0 rows affected (0.00 sec)
答案 2 :(得分:2)
我遇到了一个问题,我的数据库(名为:caloriecalculator)的查询耗时太长而且根本不会丢失。我按照以下步骤操作,修复了我的问题:
答案 3 :(得分:2)
如果在Windows中使用xampp
您还可以使用phpmyadmin删除数据库
回家->数据库->单击您的[数据库名称]->删除
OR
您还可以手动删除数据库
转到xampp-> mysql->数据-> [数据库名称]
立即删除您的[数据库名称]。
答案 4 :(得分:0)
我遇到了同样的问题,我所做的就是从mysql数据目录中删除数据库目录。