首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL「No database selected」錯誤:原因與一行解決

     編輯:MySQL 綜合教學

MySQL「No database selected」錯誤:原因與一行解決

執行 SHOW TABLES 或查詢表時出現 ERROR 1046 (3D000): No database selected,是新手最常遇到的錯誤。本文說明原因、解決方式與避免技巧。

錯誤重現

mysql> SHOW TABLES;
ERROR 1046 (3D000): No database selected

根本原因

MySQL 連線建立後,**未指定當前預設資料庫**。所有無前綴資料庫名的表操作(SHOW TABLES、SELECT * FROM t、DESC t 等)都需要先選擇資料庫上下文。

解決方法

-- 方法 1:USE 指令(互動模式最常用)
mysql> USE `mydb`;
Database changed
mysql> SHOW TABLES;
+----------------+
| Tables_in_mydb |
+----------------+
| user           |
| order          |
+----------------+

-- 方法 2:連線時指定(腳本/應用推薦)
mysql -u root -p -D mydb
# 或
mysql -u root -p mydb

-- 方法 3:SQL 前綴資料庫名(跨庫查詢必用)
SELECT * FROM `mydb`.`user`;
SHOW TABLES FROM `mydb`;

應用層最佳實踐

  • 連線池配置:URL 明確帶上資料庫名 jdbc:mysql://host:3306/mydb,避免借用連線時上下文遺失。
  • ORM 實體映射:@Table(name = "user", schema = "mydb") 顯式指定 schema。
  • 多租戶/分庫分表:動態切換 USE 或前綴 schema 名,注意連線池連線不可共用不同 schema(除非統一權限)。

常見誤區

誤區正確認知
以為建立表就自動選擇該庫CREATE TABLE mydb.t ... 只建表,**不切換**當前資料庫
以為 SHOW DATABASES 後會自動進入第一個庫僅列表,不切換上下文
在 Stored Procedure 內不需要 USESP 執行時繼承呼叫者的當前資料庫,建議內部用完整 db.table 寫法
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved