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
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
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
And that’s how you can resolve the error no database selected in MySQL database server 😉