2017-04-07 19 views
0

我有一組可執行文件(特別是BOINC服務器可執行文件,但我認爲它不重要),我嘗試在Ubuntu 16.04系統上運行。這些可執行文件是在不同的機器上構建的,並使用基於RHEL 6.6框架構建的MySQL客戶端庫版本(發佈計劃是在RHEL 6.6框中構建所有內容並將其部署在一起,但目前的可執行文件未構建那裏)。可執行程序試圖連接到錯誤的MySQL套接字文件位置

RHEL 6.6配置爲將其MySQL套接字文件放在/var/lib/mysql/mysql.sock

Ubuntu 16.04盒子被配置爲把它的MySQL套接字文件放在/var/run/mysqld/mysqld.sock

當我試圖運行連接到數據庫在Ubuntu 16.04框中的可執行文件之一,我得到以下錯誤:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' 

錯誤來直出mysql_real_connect功能。只有這些可執行文件纔會給我那個錯誤。 mysql推薦工作正常。 mysql_config --socket返回/var/run/mysqld/mysqld.sock,就像我期望的那樣。

我試過了所有關於編輯配置文件的建議。我已經添加了一個~/.my.cnf文件和一個/etc/mysql/mysql.conf.d/client_socket.cnf文件,該文件指定套接字文件在[client]部分中的位置,用於處理套接字文件位置的所有其他來源。它沒有改變可執行文件的行爲;他們總是尋找/var/lib/mysql/mysql.sock,好像有些東西是硬編碼的。雖然我找不到任何東西。

我一直在毆打我的頭對付這個問題一段時間,我無法弄清楚發生了什麼事情。我最終打開了/var/lib/mysql的權限,並將真正的套接字文件符號鏈接到了預期的位置,但那感覺像是一個黑客。這裏發生了什麼?爲什麼我的可執行文件似乎忽略了所有MySQL系統配置?解決這個問題的正確方法是什麼?難道這實際上是硬編碼的地方?

回答

相關問題