MySQL Connector/ODBC 發行說明
如果 Connector/ODBC 使用安全連線與 MySQL 伺服器連線,而使用該連線的應用程式本身又呼叫 OpenSSL 程式庫,則應用程式可能會失敗,因為屆時將會使用 OpenSSL 程式庫的兩個複本。
注意
Connector/ODBC 8.0 和更高版本會動態連結至 OpenSSL,而較早的 Connector/ODBC 版本則會靜態連結至 OpenSSL。這解決了從同一個應用程式使用兩個 OpenSSL 複本相關的問題。
注意
TLSv1.0 和 TLSv1.1 連線協定已在 Connector/ODBC 8.0.26 中棄用,並在 8.0.28 版中移除。
注意
另請參閱 tls-versions 連線選項。
為防止此問題,在您的應用程式中,請勿允許在一個執行緒中初始化 OpenSSL,並在另一個執行緒中同時開啟 Connector/ODBC 連線(也會初始化 OpenSSL)。例如,使用互斥鎖以確保 SQLDriverConnect()
或 SQLConnect()
呼叫與 OpenSSL 初始化之間同步。除此之外,請盡可能實作下列項目
使用 Connector/ODBC 的組建版本,該版本會(靜態或動態)連結至
libmysqlclient
程式庫的版本,而該程式庫又會動態連結至應用程式所呼叫的同一 OpenSSL 程式庫。當建立 Connector/ODBC 的組建版本時,該版本會(靜態或動態)連結至
libmysqlclient
程式庫的版本,而該程式庫又會靜態連結至 OpenSSL 程式庫,請勿在您的組建版本中匯出 OpenSSL 符號。這可防止應用程式符號的不正確解析;但是,這並不能防止在單一應用程式中執行兩個 OpenSSL 程式碼複本的其他問題。