2013-06-15 4 views
2

У меня возникла проблема с использованием MySQL 5.5, работающего на xampp (версия 1.8.1). Я продолжал получать ошибку «# 1046 - Нет базы данных» при попытке добавить таблицу в базу данных через окно консоли.Ошибка MySQL: # 1046 - База данных не выбрана

Я убедился, что база данных была выбрана «USE database_name;», однако я все еще получал ту же ошибку.

Я дважды проверял и нашел все привилегии для пользователя. Разочарованный, я «Отмените выбор всех», а затем «Проверить все» глобальными привилегиями.

Я вышел из системы, перезапущены службы сервера, закрыл браузер, перезапущены службы сервера, открыл браузер, и авторизованы.

Теперь я могу создавать таблицы с помощью консоли. Мне кажется, что сброс привилегий исправил проблему.

Может ли кто-нибудь сказать мне, если это известная ошибка, если мне повезет, или пропустил точку полностью? Документация, которую я нашел относительно этой ошибки, была в основном для импорта базы данных и использования «Использовать имя_базы_базы»; чтобы база данных была действительно выбрана. Однако я не считаю, что это было проблемой.

Обращаем ваше внимание, что при создании новых баз данных я снова получаю ошибку # 1046. Метод, упомянутый выше, был случайным и не позволял мне создавать новые таблицы внутри новой базы данных. Однако я все еще могу работать с первой созданной мной базой данных.

ответ

1

Если привилегии были непосредственно вставлены в таблицу «пользователь» (многие веб-интерфейсы, такие как phpMyAdmin, это нужно), нужно выполнить FLUSH PRIVILEGES (для этого есть кнопка phpMyAdmin) или перезагрузить сервер, чтобы перезагрузить эти привилегии. Также не требуется, когда используется GRANT.

+1

хороший улов - что * может * были здесь. Причина, по которой для программного обеспечения, такого как phpMyAdmin, требуется «FLUSH PRIVILEGES» (и есть кнопка для этого), так это то, что вы не потеряете свои права, если вы допустили ошибку или хотите изменить привилегии пользователя, с которым работаете. – Kaii

+0

Благодарим вас за ответ, однако я попробовал ваше решение и не работает над новыми базами данных, которые я создал. Я попытался повторить процесс, о котором я упоминал выше, но, похоже, первый случай был случайным. Это странно, потому что я могу работать с первой базой данных, но не с новыми базами данных. – user2038001

+0

Возможно, это просто ошибка. То, что я, кажется, не понимаю, это то, на что вы на самом деле ссылаетесь. Из того, что я могу сказать до сих пор, вы использовали окно запросов phpMyAdmin. Что произойдет, когда вы попробуете настоящую вещь, а именно клиент командной строки MySQL или браузер запросов MySQL, чтобы выполнить 'create database ...; grant ...; use ...; create table ...;' в последовательности и что более важно, через один сеанс/соединение? – Sam

27

Я знаю, что это очень поздний ответ, но в интересах любого, кто встречает эту ошибку, он также может появляться, когда имя базы данных включает тире. В этом случае вы должны поставить кавычку вокруг имени базы данных, например, так:

GRANT ALL ON `database-name`.* TO 'username'@'localhost'; 

Сообщение об ошибке не очень полезно, поскольку это предложить вам нужно выбрать базу данных для того, чтобы предоставить привилегии пользователю.

+0

Это была моя проблема, спасибо! – jeffwtribble

6

Еще один поздний ответ, но это также может произойти, если имя таблицы (. *) Не указано. Я запустил исправление, добавив имя. * После базы данных, чтобы заставить его работать.

До:

GRANT ALL PRIVILEGES ON my_db_name TO ... 

После:

GRANT ALL PRIVILEGES ON my_db_name.* TO ... 

Это изменение исправили несколько неоднозначное ошибку "ERROR 1046 (3D000): Нет базы данных, выбранный"

Смежные вопросы