文件首頁
MySQL 9.0 C API 開發人員指南
下載本手冊
PDF (美式信紙) - 1.4Mb
PDF (A4) - 1.4Mb


MySQL 9.0 C API 開發人員指南  /  ...  /  mysql_real_connect_dns_srv()

5.4.59 mysql_real_connect_dns_srv()

MYSQL *
mysql_real_connect_dns_srv(MYSQL *mysql,
                           const char *dns_srv_name,
                           const char *user,
                           const char *passwd,
                           const char *db,
                           unsigned long client_flag)

說明

注意

mysql_real_connect_dns_srv() 是一個同步函數。與 mysql_real_connect() 不同,它沒有非同步的對應版本。

mysql_real_connect_dns_srv()mysql_real_connect() 類似,只是引數清單沒有指定要連線的特定 MySQL 伺服器主機。相反地,它會命名一個 DNS SRV 記錄,該記錄指定一組伺服器。有關 MySQL 中 DNS SRV 支援的資訊,請參閱使用 DNS SRV 記錄連線到伺服器

mysql_real_connect_dns_srv()dns_srv_name 引數取代了 mysql_real_connect()hostportunix_socket 引數。dns_srv_name 引數會命名一個 DNS SRV 記錄,該記錄決定用於建立與 MySQL 伺服器連線的候選主機。

mysql_real_connect_dns_srv()mysqluserpasswddbclient_flag 引數的含義與 mysql_real_connect() 相同。如需有關其含義的說明,請參閱章節 5.4.58,「mysql_real_connect()」

假設 DNS 設定了此 example.com 網域的 SRV 資訊

Name                     TTL   Class   Priority Weight Port Target
_mysql._tcp.example.com. 86400 IN SRV  0        5      3306 host1.example.com
_mysql._tcp.example.com. 86400 IN SRV  0        10     3306 host2.example.com
_mysql._tcp.example.com. 86400 IN SRV  10       5      3306 host3.example.com
_mysql._tcp.example.com. 86400 IN SRV  20       5      3306 host4.example.com

若要使用該 DNS SRV 記錄,請將 "_mysql._tcp.example.com" 作為 mysql_real_connect_dns_srv()dns_srv_name 引數傳遞,然後它會嘗試連線到群組中的每個伺服器,直到成功建立連線。只有在無法與任何伺服器建立連線時,才會發生連線失敗。DNS SRV 記錄中的優先順序和權重值決定了應嘗試伺服器的順序。

mysql_real_connect_dns_srv() 僅嘗試建立 TCP 連線。

客戶端程式庫會為每次呼叫 mysql_real_connect_dns_srv() 執行 DNS SRV 查詢。客戶端程式庫不會快取查詢結果。

傳回值

如果連線成功,則傳回 MYSQL* 連線處理常式;如果連線不成功,則傳回 NULL。對於成功的連線,傳回值與第一個引數的值相同。

錯誤

與您可以從 mysql_real_connect() 獲得的錯誤相同,加上

範例

以下範例使用先前顯示的 DNS SRV 記錄的名稱,作為建立連線的候選伺服器來源。

MYSQL mysql;
const char *dns_srv_name = "_mysql._tcp.example.com";

mysql_init(&mysql);
if (!mysql_real_connect_dns_srv(&mysql,dns_srv_name,"user","passwd","database",0))
{
    fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(&mysql));
}