为什么可以';我不能删除MySQL数据库吗? 问题
我在Mac OS 10.8.2上运行MySQL 5.5.23,无法删除特定数据库,但我可以删除其他数据库 当我尝试删除特定表时,会出现以下错误:为什么可以';我不能删除MySQL数据库吗? 问题,mysql,database,macos,pid,Mysql,Database,Macos,Pid,我在Mac OS 10.8.2上运行MySQL 5.5.23,无法删除特定数据库,但我可以删除其他数据库 当我尝试删除特定表时,会出现以下错误: #1548 - Cannot load from mysql.proc. The table is probably corrupted ERROR! MySQL server PID file could not be found! 尝试修复 我已经重新启动了系统 我已尝试通过CLI重新启动MySQL $sudo/usr/local/mysq
#1548 - Cannot load from mysql.proc. The table is probably corrupted
ERROR! MySQL server PID file could not be found!
尝试修复
- 我已经重新启动了系统
- 我已尝试通过CLI重新启动MySQL
$sudo/usr/local/mysql/support files/mysql.server stop
- 但是收到了这个错误
错误!找不到MySQL服务器PID文件代码>
- 我已经修复了mysql.proc表。
修复表mysql.proc
REPAIR TABLE mysql.proc USE\u FRM
- 我已经修复了所有mysql.*表。
修复表mysql.*
- 从命令行运行mysqlcheck时
mysqlcheck--repair--all数据库
mysqlcheck——修复特定数据库
- 我收到了这个错误:
mysqlcheck:get错误:2002:在尝试连接时无法通过socket'/var/MySQL/MySQL.sock'(2)连接到本地MySQL服务器
- 我收到了这个错误:
sudo /usr/local/mysql/support-files/mysql.server stop
并收到此错误:
#1548 - Cannot load from mysql.proc. The table is probably corrupted
ERROR! MySQL server PID file could not be found!
更新[2.1]2013-01-05[纽约]下午5:37
我运行了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
征询的文章
- 备份/保存包含重要数据的所有数据库
- 删除mySQL
- 重新安装mySQL
- 恢复所有备份的数据库
- 我会尝试:
ls-la
,以验证邪恶数据库在权限、所有权等方面是否与其他数据库相同。例如,此处无法删除“原始”数据库(它是由以root身份运行的愚蠢工具创建的):
运行chown-mysql:mysql\u-db\u-xatex\u-original;chmod 700 _db_xatex_original
将解决此问题(但请检查目录中的,以验证是否也存在权限和所有权)
最后,我使用了以下丑陋的黑客(在尝试停止、重新启动和修复
修复
可能针对的任何东西之后):
- 创建了一个数据库“替罪羊”
- 停止MySQL服务器
- 将MySQL服务器创建的目录/var/lib/MySQL/scapegoat复制到/tmp
- 重新启动MySQL服务器,丢弃数据库“替罪羊”,停止服务器
- 现在我有了一个干净、空的DB目录副本,MySQL对此一无所知。
- 将“evildb”目录移动到/tmp(这样,如果出现问题,我可以将其放回去)
- 将“替罪羊”目录移动到/var/lib/mysql,并将其重命名为“evildb”
- 启动MySQL服务器
- 不确定我是否在这一点上进行了更多的维修
- 而“evildb”数据库就可以删除了强>
REPAIR
执行的检查略有不同。可能在受影响的目录中存在意外情况
我认为这是在SuSE 11.2 Linux发行版的MySQL 5.1或5.2上实现的。希望能有帮助
更新
回想起来,我不记得在“proc”上有错误。因此,我不太确定问题是否出在目录中。它可能与proc
表连接,而不是表损坏。您是否尝试过目视检查proc
数据库表,以便在其中找到属于邪恶数据库的内容
USE mysql;
SELECT * FROM proc;
这或由此产生的任何错误都有助于解决问题。您可能知道,有些行的db
列不正确。必要时,您可以导出proc
表,并在清理后重新加载它(通过SQL或磁盘文件)
试验
我对上述更新进行了部分验证。通过故意将垃圾插入新创建的数据库evil
的proc
表中,我部分地再现了您的症状(无法恢复的数据库,MySQL连接在尝试时崩溃)。错误号不是1548;但如果我把正确的垃圾放在那张桌子上,也许会是。。。无论如何,有用的一点是,通过删除邪恶
数据库的所有引用,后者再次成为可删除的:
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)
我遇到了一个问题,在我的数据库(名为:CaloricalCalculator)上的查询花费了太长时间,而且根本不会停止。我遵循以下步骤,解决了我的问题:
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)