我刚刚在开发机器上遇到了一个非常奇怪的情况:数据库在 PHPMyAdmin 中列出,但没有任何表。出于好奇,我mysql
在命令行上打开了一个客户端,结果:
mysql> CREATE DATABASE somedb;
ERROR 1007 (HY000): Can't create database 'somedb'; database exists
mysql> DROP DATABASE somedb;
ERROR 1008 (HY000): Can't drop database 'somedb'; database doesn't exist
我正在运行 Arch Linux,并从 AUR 安装了 Xampp 包;MySQL 安装来自那里。我在设置新虚拟主机时可能搞砸了某些事情,也可能没有,但无论如何,我完全不知道发生了什么。
有人可以解释一下这个问题吗?
更新:我尝试重新启动mysql
服务器,但现在它拒绝重新启动。我会查看日志。以下是相关部分:
/opt/lampp/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
130109 15:16:13 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130109 15:16:13 InnoDB: The InnoDB memory heap is disabled
130109 15:16:13 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
130109 15:16:13 InnoDB: Compressed tables use zlib 1.2.3
130109 15:16:13 InnoDB: Initializing buffer pool, size = 16.0M
130109 15:16:13 InnoDB: Completed initialization of buffer pool
130109 15:16:13 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name /opt/lampp/var/mysql/ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
130109 15:16:13 mysqld_safe mysqld from pid file /opt/lampp/var/mysql/hostname.pid ended
答案1
在阅读日志文件后,我意识到 mysqld 服务器没有以正确的用户身份运行。它最初配置为以用户身份运行,nobody
但我最近将 Apache 用户更改为someuser
,然后chown
将整个/opt/lampp
目录更改为该用户。但是我没有更改 中的相应条目my.cnf
。这样就解决了问题。
对于将来遇到这种奇怪情况的人来说:日志在/opt/lampp/var/mysql/your-hostname.err
。找到这些实际上是最困难的部分!:)