The error no database selected
frequently occurs in MySQL when you perform a statement without selecting a database first.
In the following example, I tried to query a students
table immediately after connecting to the mysql
command line:
mysql> SELECT * FROM students;
ERROR 1046 (3D000): No database selected
To resolve this error, you need to first select a database to use in the command line by running the USE
command:
USE [database_name]
You need to replace [database_name]
with the name of a database that exists in your MySQL server.
You can also list the names of all databases available on your server with the SHOW DATABASES
command.
The following shows the output on my computer:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| school_db |
| sys |
| test_db |
+--------------------+
Next, issue the USE
command as shown below:
mysql> USE school_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
The error should be resolved once mysql
responds with Database changed
as shown above.
The same applies when you’re using a graphical user interface for managing MySQL databases like MySQL Workbench or Sequel Ace.
Just run the USE
command before running any other statements:
USE school_db;
SELECT * FROM students;
SELECT * FROM cities;
The error can also happen when you run a .sql
script file from the command line without adding a USE
command:
mysql -uroot -p < ./files/query.sql
Enter password:
ERROR 1046 (3D000) at line 1: No database selected
To run the .sql
file, you need to add a USE
statement inside the SQL file itself.
Alternatively, you can also select the database you want to use from the command line as follows:
mysql -uroot -p school_db < ./files/query.sql
Enter password:
id name
3 Bristol
4 Liverpool
1 London
2 York
You need to add your database name after the -p
option and before the <
symbol.
And that’s how you can resolve the error no database selected in MySQL database server 😉