Błąd 1046 Nie wybrano bazy danych, jak rozwiązać?

297

Błąd zapytania 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 powiedział:

#1046 - No database selected

potrzebuję tutaj pomocy.

steph
źródło
7
Jeśli ktoś jest zainteresowany, możesz także podać nazwę bazy danych za pomocą komendy CLI bez edytowania pliku importu. mysql -u root -p databasename < import.sql
Sam Dufel
przydarzyło mi się: utwórz schemat, wypełnij nazwę bazy danych, a następnie powiedz „niepowodzenie, nie wybrano bazy danych”. ponownie otwórz środowisko robocze, widzę bazę danych, której właśnie nie udało mi się utworzyć. Następnie wybieram bazę danych, którą właśnie utworzyłem, otwieram plik .sql i uruchamiam, zarówno przy tworzeniu bazy danych, jak i przy użyciu instrukcji bazy danych, znowu narzeka „nie wybrano żadnej bazy danych”. ponownie otwórz stół warsztatowy, wszystkie tabele są budowane. System MAC, stół roboczy 6.3.3
Tiina,

Odpowiedzi:

408

Musisz powiedzieć MySQL, której bazy danych użyć:

USE database_name;

przed utworzeniem stołu.

Jeśli baza danych nie istnieje, musisz ją utworzyć jako:

CREATE DATABASE database_name;

śledzony przez:

USE database_name;
kodaddict
źródło
8
W moim przypadku użyłem mysqldump do wyeksportowania bazy danych i działałem na nią podczas importu. Musiałem po prostu wyeksportować wyeksportowany plik sql, aby dodać te dwa polecenia na początku.
bh5k,
Dzięki! Właśnie tego potrzebowałem. Miałem skrypt do utworzenia mojej bazy danych i tabel, ale tabele nie były tworzone, ponieważ musiałem wstawić USE tablenamepolecenie.
ckpepper02
1
Zapis: CREATE DATABASE IF NOT EXISTS database_name ; USE database_name;Działa to niezależnie od tego, czy baza danych jest już utworzona, czy nie.
Stian
50

Możesz także powiedzieć MySQL, której bazy danych użyć (jeśli już ją utworzyłeś):

 mysql -u example_user -p --database=example < ./example.sql
Shay Anderson
źródło
7
Dlaczego nie mysql example -u example_user -p < ./example.sqlzamiast tego?
Pacerier,
36

Napotkałem ten sam błąd, gdy próbowałem zaimportować utworzoną wcześniej bazę danych. Oto, co zrobiłem, aby rozwiązać ten problem:

1- Utwórz nową bazę danych

2- Użyj go za pomocą usepolecenia

wprowadź opis zdjęcia tutaj

3- Spróbuj ponownie

To działa dla mnie.

Mina Fawzy
źródło
28

Jeśli próbujesz to zrobić za pomocą wiersza polecenia ...

Jeśli próbujesz uruchomić instrukcję CREATE TABLE z interfejsu wiersza poleceń, musisz określić bazę danych, w której pracujesz, przed wykonaniem zapytania:

USE your_database;

Oto dokumentacja .

Jeśli próbujesz to zrobić za pomocą MySQL Workbench ...

... musisz wybrać odpowiednią bazę danych / katalog z menu rozwijanego znajdującego się nad zakładką: Przeglądarka obiektów: Możesz określić domyślny schemat / bazę danych / katalog dla połączenia - kliknij opcje „Zarządzaj połączeniami” pod nagłówkiem Programowanie SQL ekranu powitalnego Workbench.

Uzupełnienie

To wszystko zakłada, że ​​istnieje baza danych, w której chcesz utworzyć tabelę - jeśli nie, musisz utworzyć bazę danych zanim cokolwiek innego:

CREATE DATABASE your_database;
Kucyki OMG
źródło
Korzystanie z MySQL Workbench: Czy możesz podać obraz z lokalizacją listy rozwijanej?
AdrianRM
Myślę, że może to odnosić się do starszej wersji MySQL Workbench. Właśnie wyciągnąłem najnowszą wersję i nigdzie nie widzę zakładki „przeglądarka obiektów”.
Tim Keating
Wygląda na to, że musisz użyć USE database;polecenia, nawet w MySQL Workbench (jestem w wersji 5.2.47), jeśli otrzymujesz ten błąd. Wystarczy uruchomić go tylko raz dla każdej karty zapytania - wszystkie kolejne wykonania na tej karcie wydają się poprawnie korzystać z bazy danych.
DACrosby,
Cześć, więc dla wordpress sql jak możemy „używać” w pliku SQL. Czy możesz to wyjaśnić jeszcze raz. Mam teraz problem.
Rahul S
21

Jeśli robisz to przez phpMyAdmin:

  • Zakładam, że już utworzyłeś nową bazę danych MySQL na Live Site (przez live site mam na myśli firmę, z którą hostujesz (w moim przypadku Bluehost)).

  • Przejdź do phpMyAdmin na stronie na żywo - zaloguj się do właśnie utworzonej bazy danych.

  • WAŻNE! Przed kliknięciem opcji „importuj” na górnym pasku wybierz bazę danych po lewej stronie (szary pasek, na górze napisany jest PHP Myadmin, poniżej dwie opcje: schemat_informacji i nazwa bazy danych, do której się zalogowałeś.

  • po kliknięciu właśnie utworzonej / zalogowanej bazy danych wyświetli się ta baza danych, a następnie kliknij opcję importowania.

To załatwiło sprawę. Naprawdę mam nadzieję, że to pomaga

Roanna
źródło
Można by pomyśleć, że gdybyś nie był jeszcze w bazie danych, na stronie byłaby opcja umożliwiająca wybranie jednej.
Andy Mercer
15
  • Edytuj SQLplik za pomocą Notatnika lub Notepad ++
  • dodaj następującą linię 2:

CREATE DATABASE NAME; USE NAME;

Ayham AlKawi
źródło
Jak możemy pisać w przypadku pliku bazy danych WordPress, gdy próbuję zaimportować za pomocą MySql Workbench, ale nie wybrano żadnej bazy danych
Rahul S
8

Jeśli importujesz bazę danych, musisz najpierw ją utworzyć o tej samej nazwie, a następnie wybierz ją, a następnie IMPORTUJ do niej istniejącą bazę danych.

Mam nadzieję, że to działa dla Ciebie!

ivan n
źródło
Dodaj szczegóły odpowiedzi, wyjaśniając swoje kroki.
Starx,
7

Dla MySQL Workbench

  1. Wybierz bazę danych z zakładki Schematy klikając prawym przyciskiem myszy.
  2. Ustaw bazę danych jako domyślny schemat

wprowadź opis zdjęcia tutaj

Eric Korolev
źródło
2

cytując ivan n: „Jeśli importujesz bazę danych, najpierw musisz ją utworzyć o tej samej nazwie, a następnie wybierz ją, a następnie IMPORTUJ do niej istniejącą bazę danych. Mam nadzieję, że to zadziała!”

Oto kroki: Utwórz bazę danych, na przykład my_db1, utf8_general_ci. Następnie kliknij, aby przejść do tej bazy danych. Następnie kliknij „importuj” i wybierz bazę danych: my_db1.sql

To powinno być wszystko.

iversoncru
źródło
Powinien to być komentarz pod odpowiedzią Iwana, aby mógł zmienić swoją odpowiedź, uwzględniając twoje kroki.
Navigatron
1

najpierw wybierz bazę danych: USE db_name

następnie tabela kreacji: CREATE TABLE nazwa_tab (id int, nazwa varchar (255), wynagrodzenie int, city varchar (255));

dotyczy to składni wersji mysql 5.5

veeru666
źródło
1

uważaj na puste hasła

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

poprosi o hasło i narzeka mysqldump: Got error: 1046: "No database selected" when selecting the database

problem polega na tym, że -popcja wymaga braku odstępu między -phasłem a hasłem.

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

rozwiązał problem (cytaty nie są już potrzebne).

użytkownik3338098
źródło
0

Chociaż jest to dość stary wątek, właśnie coś odkryłem. Utworzyłem nową bazę danych, potem dodałem użytkownika i w końcu poszedłem użyć phpMyAdmina do przesłania pliku .sql. całkowita porażka. System nie rozpoznaje, do której DB zamierzam ...

Kiedy zaczynam od nowa BEZ najpierw dołączenia nowego użytkownika, a następnie wykonania tego samego importu phpMyAdmin, działa dobrze.

zipzit
źródło
0

Chciałem tylko dodać: jeśli utworzysz bazę danych w mySQL na działającej stronie, to wejdź do PHPMyAdmin, a baza danych się nie wyświetla - wyloguj się z cPanel, a następnie zaloguj się ponownie, otwórz PHPMyAdmin i powinno już tam być.

the10thplanet
źródło
0

Dla dodatkowego elementu bezpieczeństwa, pracując z wieloma bazami danych w tym samym skrypcie, możesz określić bazę danych w zapytaniu, np. „Stwórz tabelę moja_awesome_db.really_cool_table ...”.

William T. Mallard
źródło
0

Myślę, że się spóźniłem:] soory,

Jeśli jesteś tutaj, jak ja, szukając rozwiązania, gdy pojawia się ten błąd mysqldumpzamiast z mysql, wypróbuj to rozwiązanie, które znalazłem na niemieckiej stronie internetowej przez przypadek, więc chciałem się podzielić z osobami bezdomnymi, które boli mnie głowa.

Tak więc problem występuje, ponieważ -databasesparametr brak przed nazwą bazy danych

Twoje polecenie musi więc wyglądać następująco:

mysqldump -pdbpass -udbuser --databases dbname

Inną przyczyną problemu w moim przypadku było to, że jestem rozwijająca się na lokalny, a rootużytkownik nie ma hasła, więc w tym przypadku należy użyć --password=zamiast -pdbpass, więc moja ostateczna komenda brzmiała:

mysqldump -udbuser --password= --databases dbname

Link do pełnego wątku (w języku niemieckim): https://marius.bloggt-in-braunschweig.de/2016/04/29/solution-mysqldump-no-database-selected-when-selecting-the-database/

MoolsBytheway
źródło
-1

jst utworzyć nowy DB w mysql.Select że nowy DB (jeśli r MySQL phpMyAdmin teraz na górze it'l być jak „Server:. . . . * >> Database) .Teraz przejdź do zakładki importu wybrać file.Import !

cs075
źródło