Ошибка 1046 Нет базы данных Выбран, как решить?


297

Ошибка SQL-запроса:

--
-- Database: `work`
--
-- --------------------------------------------------------
--
-- Table structure for table `administrators`
--
CREATE TABLE IF NOT EXISTS `administrators` (

`user_id` varchar( 30 ) NOT NULL ,
`password` varchar( 30 ) NOT NULL ) ENGINE = InnoDB DEFAULT CHARSET = latin1;

MySQL сказал:

#1046 - No database selected

нужна помощь здесь


7
Если кому-то это интересно, вы также можете указать имя базы данных с помощью команды CLI, не редактируя файл импорта. mysql -u root -p databasename < import.sql
Сэм Дюфель

то, что случилось со мной, было: создайте схему, заполнив имя базы данных, затем она говорит: «ошибка, база данных не выбрана». снова откройте верстак, я вижу базу данных, которую мне только что не удалось создать. Затем я выбираю базу данных, которую только что создал, открываю файл .sql и запускаю, с созданием базы данных и использованием операторов базы данных, он жалуется, что «база данных не выбрана снова». откройте верстак, все столы построены. Система MAC, верстак 6.3.3
Тийна

Ответы:


410

Вы должны указать MySQL, какую базу данных использовать:

USE database_name;

прежде чем создать таблицу.

Если база данных не существует, вам нужно создать ее как:

CREATE DATABASE database_name;

с последующим:

USE database_name;

8
В моем случае, я использовал mysqldump для экспорта базы данных и столкнулся с этим при импорте. Мне просто нужно было отредактировать экспортированный файл sql, чтобы добавить эти две команды в начало.
bh5k

Спасибо! Это то, что мне было нужно. У меня был скрипт для создания базы данных и таблиц, но таблицы не создавались, потому что мне нужно было вставить USE tablenameкоманду.
ckpepper02

1
Запись: CREATE DATABASE IF NOT EXISTS database_name ; USE database_name;Это работает независимо от того, создана ли база данных или нет.
Стянь

50

Вы также можете указать MySQL, какую базу данных использовать (если она уже создана):

 mysql -u example_user -p --database=example < ./example.sql

7
Почему бы не mysql example -u example_user -p < ./example.sqlвместо этого?
Pacerier

36

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

1- Создать новую базу данных

2- Используйте его по useкоманде

введите описание изображения здесь

3- Попробуй еще раз

Это работает для меня.


28

Если вы пытаетесь сделать это через командную строку ...

Если вы пытаетесь запустить оператор CREATE TABLE из интерфейса командной строки, вам нужно указать базу данных, в которой вы работаете, перед выполнением запроса:

USE your_database;

Вот документация .

Если вы пытаетесь сделать это через MySQL Workbench ...

... вам нужно выбрать соответствующую базу данных / каталог в раскрывающемся меню, расположенном над вкладкой: Обозреватель объектов: Вы можете указать схему / базу данных / каталог по умолчанию для соединения - выберите параметры «Управление соединениями» под заголовком «Разработка SQL» заставки Workbench.

добавление

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

CREATE DATABASE your_database;

Использование MySQL Workbench: Не могли бы вы предоставить изображение с расположением выпадающего?
AdrianRM

Я думаю, что это может относиться к более старой версии MySQL Workbench. Я только что вытащил самую последнюю версию и нигде не вижу вкладку "обозреватель объектов".
Тим Китинг

Похоже, вам нужно использовать USE database;команду, даже в MySQL Workbench (я в v5.2.47), если вы получаете эту ошибку. Нужно только запустить его один раз для каждой вкладки запроса - все последующие выполнения на этой вкладке, похоже, правильно используют базу данных.
DACrosby

Привет, Так что для WordPress SQL, как мы можем "использовать" в файле SQL. Не могли бы вы уточнить это еще раз. У меня сейчас проблема.
Рахул С

21

Если вы делаете это через phpMyAdmin:

  • Я предполагаю, что вы уже создали новую базу данных MySQL на Live Site (под живым сайтом я имею в виду компанию, с которой вы работаете (в моем случае Bluehost)).

  • Зайдите на phpMyAdmin на действующий сайт - войдите в базу данных, которую вы только что создали.

  • Теперь ВАЖНО! Прежде чем щелкнуть опцию «импорт» в верхней панели, выберите вашу базу данных в левой части страницы (на серой панели, сверху написано PHP Myadmin, под ней два параметра: информационная_схема и имя базы данных, в которую вы только что вошли.

  • Как только вы щелкнете по базе данных, которую вы только что создали / вошли в нее, вам будет показана эта база данных, а затем щелкните вариант импорта.

Это помогло мне. Очень надеюсь, что это помогает


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

15
  • Отредактируйте свой SQLфайл, используя Блокнот или Блокнот ++
  • добавьте следующие 2 строки:

CREATE DATABASE NAME; USE NAME;


Как мы можем написать в случае для файла базы данных WordPress, как я пытаюсь импортировать с помощью MySql Workbench, но не выбирая базы данных
Rahul S

8

Если вы импортируете базу данных, вам нужно сначала создать ее с тем же именем, затем выбрать ее и затем ИМПОРТИРОВАТЬ в нее существующую базу данных.

Надеюсь, это работает для вас!


Пожалуйста, добавьте некоторые детали в ваш ответ, объясняя ваши шаги.
Starx

7

Для MySQL Workbench

  1. Выберите базу данных на вкладке Схемы, щелкнув правой кнопкой мыши.
  2. Установить базу данных в качестве схемы по умолчанию

введите описание изображения здесь


2

цитата ivan n: «Если вы импортируете базу данных, вам нужно сначала создать ее с тем же именем, затем выбрать ее и затем импортировать в нее существующую базу данных. Надеюсь, она работает для вас!»

Это следующие шаги: Создайте базу данных, например my_db1, utf8_general_ci. Затем нажмите, чтобы войти в эту базу данных. Затем нажмите «импорт» и выберите базу данных: my_db1.sql

Это должно быть все.


Это должен быть комментарий под ответом Ивана, чтобы он мог изменить свой ответ, включив в него ваши шаги.
Навигатрон

1

сначала выберите базу данных: USE db_name

затем создайте таблицу: CREATE TABLE tb_name (id int, имя varchar (255), зарплата int, город varchar (255));

это для синтаксиса версии MySQL 5.5


1

будьте осторожны с пустыми паролями

mysqldump [options] -p '' --databases database_name

попросит пароль и пожаловаться mysqldump: Got error: 1046: "No database selected" when selecting the database

проблема в том, что -pопция требует, чтобы между -pпаролем и пробелом не было места .

mysqldump [options] -p'' --databases database_name

решил проблему (кавычки больше не нужны).


0

Хотя это довольно старая ветка, я кое-что узнал. Я создал новую базу данных, затем добавил пользователя и, наконец, перешел к использованию phpMyAdmin для загрузки файла .sql. полный провал. Система не распознает, к какой БД я нацеливаюсь ...

Когда я начинаю заново БЕЗ первого присоединения нового пользователя, а затем выполняю тот же импорт phpMyAdmin, он работает нормально.


0

Просто хотел добавить: если вы создаете базу данных в mySQL на работающем сайте, затем заходите в PHPMyAdmin, и база данных не отображается - выйдите из cPanel, затем войдите снова, откройте PHPMyAdmin, и он должен быть там сейчас.


0

Для дополнительного элемента безопасности при работе с несколькими БД в одном и том же сценарии вы можете указать БД в запросе, например, «создать таблицу my_awesome_db.really_cool_table ...».


0

Я опоздал, я думаю:

Если вы здесь, как я, ищите решение, когда mysqldumpвместо mysql возникает эта ошибка , попробуйте это решение, которое я случайно нашел на немецком веб-сайте, поэтому я хотел бы поделиться с бездомными, у которых такие головные боли, как у меня.

Так что проблема возникает из-за отсутствия -databasesпараметра перед именем базы данных

Итак, ваша команда должна выглядеть так:

mysqldump -pdbpass -udbuser --databases dbname

Еще одна причина проблемы в моем случае заключалась в том, что я работаю на локальном компьютере, и у rootпользователя нет пароля, поэтому в этом случае вы должны использовать --password=вместо -pdbpass, поэтому моя последняя команда была:

mysqldump -udbuser --password= --databases dbname

Ссылка на полный поток (на немецком языке): https://marius.bloggt-in-braunschweig.de/2016/04/29/solution-mysqldump-no-database-selected-when-selecting-the-database/


-1

Jst создать новую БД в mysql.Select , что новый DB (если г использует в настоящее время MySQL PHPMyAdmin на вершине it'l быть как «Сервер:. . . . * >> Базы данных) .Now перейдите на вкладку импорта выберите file.Import !

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.