Lỗi 1046 Không có cơ sở dữ liệu được chọn, làm thế nào để giải quyết?


297

Lỗi truy vấn 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 nói:

#1046 - No database selected

cần giúp đỡ ở đây


7
Trong trường hợp bất kỳ ai quan tâm, bạn cũng có thể chỉ định tên cơ sở dữ liệu thông qua lệnh CLI mà không cần chỉnh sửa tệp nhập. mysql -u root -p databasename < import.sql
Sam Dufel

điều xảy ra với tôi là: tạo một lược đồ, điền vào tên của cơ sở dữ liệu, sau đó nó báo "fail, không có cơ sở dữ liệu nào được chọn". mở lại bàn làm việc, tôi thấy cơ sở dữ liệu mà tôi vừa không tạo được. Sau đó, tôi chọn cơ sở dữ liệu mà tôi vừa tạo và mở tệp .sql và chạy, với cả tạo cơ sở dữ liệu và sử dụng các câu lệnh cơ sở dữ liệu, nó lại phàn nàn "không có cơ sở dữ liệu nào được chọn". mở lại bàn làm việc, tất cả các bàn đều được xây dựng. Hệ thống MAC, bàn làm việc 6.3.3
Tiina

Câu trả lời:


409

Bạn cần cho MySQL biết cơ sở dữ liệu nào sẽ sử dụng:

USE database_name;

trước khi bạn tạo một bảng.

Trong trường hợp cơ sở dữ liệu không tồn tại, bạn cần tạo nó như:

CREATE DATABASE database_name;

theo dõi bởi:

USE database_name;

8
Trong trường hợp của tôi, tôi đã sử dụng mysqldump để xuất cơ sở dữ liệu và đang chạy vào đây khi nhập. Tôi chỉ phải chỉnh sửa tệp sql đã xuất để thêm hai lệnh này vào đầu của nó.
bh5k

Cảm ơn! Đây là những gì tôi cần. Tôi đã có một tập lệnh để tạo cơ sở dữ liệu và các bảng của mình nhưng các bảng không được tạo vì tôi cần chèn USE tablenamelệnh.
ckpepper02

1
Viết: CREATE DATABASE IF NOT EXISTS database_name ; USE database_name;Điều này hoạt động cho dù cơ sở dữ liệu đã được tạo hay chưa.
Stian

50

Bạn cũng có thể cho MySQL biết cơ sở dữ liệu nào sẽ sử dụng (nếu bạn đã tạo nó):

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

7
Tại sao không mysql example -u example_user -p < ./example.sqlthay thế?
Pacerier

36

Tôi đã gặp phải lỗi tương tự khi tôi cố gắng nhập cơ sở dữ liệu được tạo từ trước đó. Đây là những gì tôi đã làm để khắc phục vấn đề này:

1- Tạo cơ sở dữ liệu mới

2- Sử dụng nó bằng uselệnh

nhập mô tả hình ảnh ở đây

3- Thử lại

Điều này làm việc cho tôi.


28

Nếu bạn đang cố gắng thực hiện điều này thông qua dòng lệnh ...

Nếu bạn đang cố chạy câu lệnh CREATE TABLE từ giao diện dòng lệnh, bạn cần chỉ định cơ sở dữ liệu bạn đang làm việc trước khi thực hiện truy vấn:

USE your_database;

Đây là tài liệu .

Nếu bạn đang cố gắng thực hiện điều này thông qua MySQL Workbench ...

... bạn cần chọn cơ sở dữ liệu / danh mục phù hợp trong menu thả xuống được tìm thấy phía trên tab: Trình duyệt đối tượng :. Bạn có thể chỉ định lược đồ / cơ sở dữ liệu / danh mục mặc định cho kết nối - nhấp vào tùy chọn "Quản lý kết nối" trong tiêu đề Phát triển SQL của màn hình giật gân Workbench.

Phụ lục

Tất cả điều này giả định rằng có một cơ sở dữ liệu mà bạn muốn tạo bảng bên trong - nếu không, bạn cần tạo cơ sở dữ liệu trước mọi thứ khác:

CREATE DATABASE your_database;

Sử dụng MySQL Workbench: Bạn có thể vui lòng cung cấp hình ảnh với vị trí thả xuống không?
AdrianRM

Tôi nghĩ rằng điều này có thể đề cập đến một phiên bản cũ hơn của MySQL Workbench. Tôi vừa mới kéo phiên bản mới nhất và tôi không thấy tab "trình duyệt đối tượng" ở bất cứ đâu.
Tim Keat

Có vẻ như bạn cần sử dụng USE database;lệnh, ngay cả trong MySQL Workbench (Tôi đang ở v5.2.47) nếu bạn gặp lỗi này. Chỉ cần chạy nó một lần cho mỗi tab truy vấn - tất cả các lần thực hiện tiếp theo trên tab đó dường như sử dụng cơ sở dữ liệu một cách chính xác.
DACrosby

Xin chào, vậy đối với wordpress sql, làm thế nào chúng ta có thể "sử dụng" trong tệp SQL. Bạn có thể vui lòng làm rõ điều đó một lần nữa. Tôi đang có vấn đề bây giờ.
Rahul S

21

Nếu bạn đang làm điều này thông qua phpMyAdmin:

  • Tôi giả sử bạn đã tạo Cơ sở dữ liệu MySQL mới trên Trang web trực tiếp (theo trang web trực tiếp, ý tôi là công ty lưu trữ của bạn (trong trường hợp của tôi là Bluehost)).

  • Truy cập phpMyAdmin trên trang web trực tiếp - đăng nhập vào cơ sở dữ liệu bạn vừa tạo.

  • Bây giờ QUAN TRỌNG! Trước khi nhấp vào tùy chọn "nhập" trên thanh trên cùng, hãy chọn cơ sở dữ liệu của bạn ở phía bên trái của trang (thanh màu xám, trên đầu có PHP Myadmin được viết, bên dưới có hai tùy chọn: information_schema và tên cơ sở dữ liệu bạn vừa đăng nhập.

  • khi bạn nhấp vào cơ sở dữ liệu bạn vừa tạo / đăng nhập vào nó sẽ hiển thị cho bạn cơ sở dữ liệu đó và sau đó nhấp vào tùy chọn nhập.

Điều đó đã đánh lừa tôi. Thực sự hy vọng điều đó sẽ giúp


Bạn sẽ nghĩ rằng nếu bạn chưa có trên cơ sở dữ liệu, sẽ có một tùy chọn trên trang để cho phép bạn chọn một cơ sở dữ liệu.
Andy Mercer

15
  • Chỉnh sửa SQLtệp của bạn bằng Notepad hoặc Notepad ++
  • thêm 2 dòng sau:

CREATE DATABASE NAME; USE NAME;


Làm thế nào chúng ta có thể viết trong trường hợp cho tệp cơ sở dữ liệu wordpress khi tôi đang cố gắng nhập bằng MySql Workbench nhưng không có cơ sở dữ liệu nào được chọn
Rahul S

8

Nếu nhập cơ sở dữ liệu, trước tiên bạn cần tạo một cơ sở dữ liệu có cùng tên, sau đó chọn cơ sở dữ liệu đó và sau đó NHẬP cơ sở dữ liệu hiện có vào cơ sở dữ liệu đó.

Hi vọng nó sẽ giúp ích cho bạn!


Vui lòng thêm một số chi tiết về câu trả lời của bạn giải thích các bước của bạn.
Starx

7

Đối với bàn làm việc của MySQL

  1. Chọn cơ sở dữ liệu từ tab Lược đồ bằng cách nhấp chuột phải.
  2. Đặt cơ sở dữ liệu làm Lược đồ mặc định

nhập mô tả hình ảnh ở đây


2

trích dẫn ivan n: "Nếu nhập cơ sở dữ liệu, bạn cần tạo một cơ sở dữ liệu đầu tiên có cùng tên, sau đó chọn nó và sau đó NHẬP cơ sở dữ liệu hiện có vào nó. Hy vọng nó hoạt động cho bạn!"

Đây là các bước: Tạo Cơ sở dữ liệu, ví dụ my_db1, utf8_general_ci. Sau đó bấm vào để đi vào bên trong cơ sở dữ liệu này. Sau đó nhấp vào "nhập" và chọn cơ sở dữ liệu: my_db1.sql

Đó nên là tất cả.


Đây phải là một bình luận bên dưới câu trả lời của Ivan, vì vậy anh ta có thể thay đổi câu trả lời của mình để bao gồm các bước của bạn.
Navigatron

1

chọn cơ sở dữ liệu đầu tiên: SỬ DỤNG db_name

sau đó tạo bảng: CREATE TABLE tb_name (id int, name varchar (255), Lương int, city varchar (255));

Điều này cho cú pháp phiên bản mysql 5.5


1

cẩn thận về mật khẩu trống

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

sẽ hỏi mật khẩu và khiếu nại với mysqldump: Got error: 1046: "No database selected" when selecting the database

vấn đề là -ptùy chọn yêu cầu không có khoảng cách giữa -pvà mật khẩu.

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

đã giải quyết vấn đề (trích dẫn không cần thiết nữa).


0

Mặc dù đây là một chủ đề khá cũ, tôi chỉ tìm thấy một cái gì đó ra. Tôi đã tạo một cơ sở dữ liệu mới, sau đó thêm một người dùng và cuối cùng đã sử dụng phpMyAdmin để tải lên tệp .sql. thất bại hoàn toàn. Hệ thống không nhận ra DB mà tôi đang nhắm đến ...

Khi tôi bắt đầu mới mà KHÔNG đính kèm người dùng mới, sau đó thực hiện cùng một lần nhập phpMyAdmin, nó hoạt động tốt.


0

Chỉ muốn thêm: Nếu bạn tạo cơ sở dữ liệu trong myQuery trên trang web trực tiếp, hãy truy cập PHPMyAdmin và cơ sở dữ liệu không hiển thị - đăng xuất cPanel sau đó đăng nhập lại, mở PHPMyAdmin và ngay bây giờ sẽ có.


0

Đối với một yếu tố an toàn được thêm vào, khi làm việc với nhiều DB trong cùng một tập lệnh, bạn có thể chỉ định DB trong truy vấn, ví dụ: "tạo bảng my_awclaw_db.really_cool_table ...".


0

Tôi đến trễ tôi nghĩ:] soory,

Nếu bạn ở đây giống như tôi đang tìm kiếm giải pháp khi lỗi này xảy ra mysqldumpthay vì mysql, hãy thử giải pháp này mà tôi tìm thấy trên một trang web tiếng Đức ngoài kia, vì vậy tôi muốn chia sẻ với những người vô gia cư bị đau đầu như tôi.

Vì vậy, vấn đề xảy ra vì thiếu -databasestham số trước tên cơ sở dữ liệu

Vì vậy, lệnh của bạn phải trông như thế này:

mysqldump -pdbpass -udbuser --databases dbname

Một nguyên nhân khác của vấn đề trong trường hợp của tôi là tôi đang phát triển cục bộ và rootngười dùng không có mật khẩu, vì vậy trong trường hợp này bạn phải sử dụng --password=thay vì -pdbpass, vì vậy lệnh cuối cùng của tôi là:

mysqldump -udbuser --password= --databases dbname

Liên kết đến chuỗi hoàn chỉnh (bằng tiếng Đức): https://marius.bloggt-in-braunschweig.de/2016/04/29/solution-mysqldump-no-database-selected-when-selecting-the-database/


-1

JST tạo một DB mới trong mysql.Select rằng DB mới (nếu bạn r sử dụng mysql phpmyadmin giờ trở đi đầu it'l được như 'Server:. . . . * >> Cơ sở dữ liệu) Now đi đến tab nhập khẩu chọn file.Import !

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.