Error
Error Code:
1046
MariaDB Error 1046: No Database Selected
Description
Error 1046 indicates that a SQL query or command was issued without an active database context. This typically happens when you attempt to perform operations like creating tables or inserting data without first selecting a specific database to work within, or if the connection itself doesn't specify a default database.
Error Message
No database selected
Known Causes
3 known causesDatabase Not Explicitly Selected
The most common cause is attempting to execute DDL or DML statements without first using the `USE database_name;` command in the current session.
Missing Database in Connection String
The application or client connecting to MariaDB failed to specify a default database within its connection parameters or URI.
SQL Script Lacks Database Context
Executing a SQL script or batch file that assumes a database is already selected, but the execution environment has not provided one.
Solutions
3 solutions available1. Select a Database Explicitly easy
Specify the database to use for your SQL commands.
1
Before executing any SQL statements that operate on tables or other database objects, explicitly select the database you intend to use. You can do this using the `USE` statement.
USE your_database_name;
2
After successfully executing the `USE` statement, you can proceed with your intended SQL commands.
-- Example: Now you can execute queries like this:
SELECT * FROM your_table_name;
2. Specify Database on Connection easy
Provide the database name when connecting to MariaDB.
1
When connecting to your MariaDB server using a client tool (like the `mariadb` command-line client, MySQL Workbench, DBeaver, or through application code), specify the database name as an argument. For the `mariadb` client, use the `-D` option or include it after the hostname.
mariadb -u your_username -p -D your_database_name
# Or:
mariadb -u your_username -p your_database_name
2
If connecting via an application (e.g., Python with `mysql.connector`), ensure the database name is part of the connection parameters.
import mysql.connector
cnx = mysql.connector.connect(
user='your_username',
password='your_password',
host='your_host',
database='your_database_name'
)
3. Qualify Table Names with Database Name medium
Prefix table names with the database name in your SQL queries.
1
Instead of relying on a `USE` statement or connection-time database selection, you can fully qualify your table names by prefixing them with the database name followed by a dot (`.`). This makes your queries self-contained and less dependent on the current database context.
SELECT * FROM your_database_name.your_table_name;
2
This approach is particularly useful in scripts or applications where you might be interacting with multiple databases and want to ensure clarity and avoid accidental operations on the wrong database.
-- Example for an INSERT statement:
INSERT INTO your_database_name.another_table (column1, column2) VALUES ('value1', 'value2');