2013-03-26 54 views
0

我下載了Karl Kraft的MySQL源代碼和庫,併爲iOS 6構建了一個MySQL客戶端庫。它在本地mysql數據庫中首次運行得非常漂亮。甚至很好地處理blob數據。如何在Objective C中設置mysql_protocol_tcp Mysql客戶端

下一步是將端口轉發到遠程數據庫。在下載各種圖書館並撕掉我的頭髮後,我去尋找一個打包的解決方案。

我下載了奇爾卡特的SSH隧道庫(30天免費試用版 - 價值149美元)。這也是第一次。這是一個愉快的日子和發呆後不建立,不鏈接,不編譯,找不到符號i386等等等等等等!

好的,所以這裏是踢球者。我現在想要使用遠程數據庫。當我通過在防火牆後面的數據庫機器上的ssh端口22到3306轉發3306 ssh端口時。現在我關閉mysqld,並且我的主機是localhost port 3306.我對mysql有一個小問題。

UNIX/MAC計算機上客戶端的默認啓動查找本地主機上的套接字連接。

我得到以下錯誤:

Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)

我需要MySQL的一個TCP協議的啓動選項。使用命令行很容易--protocol = TCP。

對於iOS客戶端庫,它並不是顯而易見的。我做了搜索,並在mysql.h中,我們有和的mysql_protocol_type常數MYSQL_PROTOCOL_DEFAULT,MYSQL_PROTOCOL_TCP等等等等

丟失的知識,我有,是如何在目標C

有編程設置的選項是一個只定義參數(服務器,名稱,端口,用戶名,密碼)的服務器對象,下一個對象是調用mysql_init()的連接對象。有沒有人有任何線索如何做到這一點?

BTW:Karl Kraft和ChilKat的傢伙應該爲後代保留他們的血統。他們爲我節省了很多時間。

在此先感謝。

回答

0

花了我一會兒才弄明白這一點。使用MySQL客戶端時,如果指定連接到'localhost',它會嘗試在/tmp/mysql.sock或/var/lib/mysql.sock中與UNIX套接字連接。但是,如果您將本地主機指定爲127.0.0.1,則它將與等同於--protocol = TCP的TCP協議連接。