
Я только что столкнулся с очень странной ситуацией на моей машине разработки: база данных указана в 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 и установил пакет Xampp из AUR; установка MySQL идет оттуда. Я мог что-то напутать, когда настраивал новый vhost, или нет, но в любом случае я в полной растерянности относительно того, что происходит.
Может кто-нибудь пролить некоторый свет на это?
ОБНОВЛЕНИЕ: Я попробовал перезапустить 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
. Найти их было на самом деле самой сложной частью! :)