MySQL/MariaDBで「1046. No database selected」エラーが発生する原因と解決方法
エラーメッセージ「1046. No database selected」の原因と解決方法
解決方法
このエラーを解決するには、以下のいずれかの方法でデフォルトのデータベースを選択する必要があります。
クエリ内でデータベースを指定する
USE <データベース名>;
SELECT * FROM テーブル名;
コマンドラインでデータベースを選択する
mysql -D <データベース名>
MySQL Workbenchでデータベースを選択する
- MySQL Workbenchを起動します。
- 左側のナビゲーションパネルで、接続したいデータベースサーバーを選択します。
- 中央のパネルで、デフォルトとして使用するデータベースを選択します。
- 右上の「接続」ボタンをクリックします。
原因
このエラーが発生する理由は、MySQLまたはMariaDBは、クエリを実行する前にデフォルトのデータベースを選択する必要があるからです。デフォルトのデータベースが選択されていない場合、MySQLまたはMariaDBはどのデータベースからデータを取得すればよいか分からなくなり、エラーが発生します。
補足
- 上記の解決方法以外にも、環境や設定によっては別の解決方法がある場合があります。
- 問題が解決しない場合は、MySQLまたはMariaDBのフォーラムやサポートに問い合わせてみてください。
USE my_database;
WITH t AS (
SELECT * FROM customers
)
SELECT * FROM t;
この例では、USE
ステートメントを使用して、my_database
データベースをデフォルトのデータベースとして選択しています。その後、WITH
句を使用して、customers
テーブルからデータを取得するクエリを定義しています。
mysql -D my_database
WITH t AS (
SELECT * FROM customers
)
SELECT * FROM t;
- 以下のクエリを実行します。
WITH t AS (
SELECT * FROM customers
)
SELECT * FROM t;
これらの例は、WITH
句を使用したクエリを実行する際に発生するエラーメッセージ「1046. No database selected」を解決する方法を示しています。
エラーメッセージ「1046. No database selected」を解決するその他の方法
環境変数を使用する
MySQLまたはMariaDBのデフォルトのデータベースを環境変数で設定することができます。
例:
- Bash
export MYSQL_DATABASE=my_database
- Windows
set MYSQL_DATABASE=my_database
環境変数を設定したら、MySQLまたはMariaDBを再起動する必要があります。
.my.cnfファイルを使用する
[client]
default-database=my_database
.my.cnf
ファイルは、通常、~/.my.cnf
(Linux/Mac) または %APPDATA%\MySQL\my.ini
(Windows) にあります。
クライアントライブラリの接続パラメータを使用する
MySQLまたはMariaDBのクライアントライブラリを使用する場合は、接続パラメータを使用してデフォルトのデータベースを指定することができます。
- Python (MySQL Connector/Python)
import mysql.connector
connection = mysql.connector.connect(
database="my_database",
user="username",
password="password",
)
- Java (JDBC)
import java.sql.Connection;
import java.sql.DriverManager;
Connection connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/my_database",
"username",
"password"
);
補足
- 上記の方法は、MySQLまたはMariaDBのバージョンによって異なる場合があります。
mysql mariadb