MySQL 沒有「使用者層級的預設 Schema/Database」設定。 預設資料庫屬於會話層級,必須在每次連線建立後、或連線字串中顯式指定。
jdbc:mysql://host:3306/your_db?useSSL=falseconnect(host='...', database='your_db', ...)"user:pass@tcp(host:3306)/your_db"此法確保連線一建立即進入正確資料庫,無額外交互。
USE target_database;
效力範圍:當前會話剩餘時間,或直到下一個 USE 命令。可用 SELECT DATABASE(); 查看當前預設庫。
StackOverflow 範例嘗試在迴圈中用變數動態切換 DB 執行 DDL:
-- 錯誤嘗試:無法用變數作為 USE 的參數
SET @db = 'db_name';
USE @db; -- 語法錯誤
正解: 僅能構建動態 SQL 執行:
SET @stmt = CONCAT('USE ', @db, '; ALTER TABLE `tbl` ...');
PREPARE s FROM @stmt; EXECUTE s; DEALLOCATE PREPARE s;
或在應用層迴圈中重新建立連線/切換 DB,避免在單一腳本中跨庫操作 DDL。
MySQL 術語中 SCHEMA 為 DATABASE 同義詞 (CREATE SCHEMA = CREATE DATABASE),不具備 PostgreSQL/Oracle 那種「命名空間」語義。因此「使用者預設 Schema」在 MySQL 架構中不存在。