文件首頁
MySQL Connector/ODBC 開發人員指南
相關文件 下載本手冊

8.1.3 設定目錄與結構描述支援

許多關聯式資料庫在參照 CATALOG 和 SCHEMA 時,其方式與 MySQL 中稱為資料庫的方式並不直接對應。它既不是 CATALOG 也不是 SCHEMA。一般而言,目錄是結構描述的集合,因此完整名稱看起來會像 catalog.schema.table.column。在 MySQL ODBC 驅動程式的歷史中,CATALOG 和 DATABASE 是用於同一事物的兩個名稱。同時,SCHEMA 通常用作 MySQL 資料庫的同義詞。這表示 CATALOG 等於 SCHEMA,這是錯誤的,但在 MySQL 伺服器環境中,它們將是相同的。

在 ODBC 中,在參照資料庫物件(例如表格)時,可以使用結構描述和目錄。對於如何解釋這些結構描述和目錄的概念,開發人員之間的期望有所不同,這就是為什麼存在 NO_CATALOG 和 NO_SCHEMA 選項的原因:涵蓋所有這些期望,並允許明確停用將 ODBC 函式參數解釋為 CATALOG 或 SCHEMA。

Connector/ODBC 驅動程式不允許同時使用目錄和結構描述功能,因為這會導致不支援的命名。但是,某些軟體(例如 MS SQL Server)可能會嘗試透過連結的伺服器物件來執行此操作。這就是為什麼 Connector/ODBC 8.0.26 在 MySQL ODBC 驅動程式中新增了 NO_SCHEMA 選項,以報告不支援結構描述的原因,而這對於目錄已經使用 NO_CATALOG 選項完成。使用 NO_SCHEMA 會導致驅動程式透過 SQLGetInfo() 呼叫報告不支援結構描述操作。因此,用戶端軟體不會嘗試以 catalog.schema.table 的形式存取表格,而是以 catalog.table 的形式存取。

表 8.1 Connector/ODBC NO_CATALOG 和 NO_SCHEMA 組合

NO_CATALOG NO_SCHEMA 說明和注意事項
true true 驅動程式不支援目錄和結構描述。
false true 支援目錄,並將其解釋為 MySQL 資料庫名稱,指定結構描述會觸發錯誤。
true false 支援結構描述,並將其解釋為 MySQL 資料庫名稱,指定目錄會觸發錯誤。
false false 同時支援目錄和結構描述,但如果同時指定兩者,則會發生錯誤。如果僅指定目錄或僅指定結構描述,則會將其解釋為 MySQL 資料庫名稱。