0

私は Karl Kraft の MySQL ソースとライブラリをダウンロードし、iOS 6 用の mysql クライアント ライブラリを構築しました。これは、ローカルの mysql データベースで初めて、見事に動作しました。ブロブデータもうまく処理しました。

次のステップは、リモート データベースへのポート転送でした。さまざまなライブラリをダウンロードして髪を引き裂いた後、パッケージ化されたソリューションを探しました。

私は Chilkat の SSH Tunnel ライブラリをダウンロードしました (30 日間の無料試用版と $149 の価値があります)。それも初めてうまくいきました。構築も、リンクも、コンパイルも、i386 のシンボルを見つけられずに、何日も夢中になった後の喜びでした。

OK、これがキッカーです。リモートデータベースを操作したいと考えています。ファイアウォールの背後にあるデータベース マシンで、3306 ssh ポートを ssh ポート 22 から 3306 に転送したとき。今度は mysqld をオフにします。私のホストは localhost ポート 3306 です。mysql に少し問題があります。

UNIX/MAC マシンでのクライアントのデフォルトの起動では、localhost でソケット接続を探します。

次のエラーが表示されます。

エラー: ソケット '/tmp/mysql.sock' を介してローカル MySQL サーバーに接続できません (38)

mysql の TCP プロトコル開始オプションが必要です。コマンド ラインを使用すると、簡単に --protocol=TCP となります。

iOS クライアント ライブラリでは、すぐにはわかりません。検索を行ったところ、mysql.h には mysql_protocol_type と定数 MYSQL_PROTOCOL_DEFAULT、MYSQL_PROTOCOL_TCP などがあります。

私が持っている不足している知識は、Objective C でプログラムでオプションを設定する方法です。

パラメータ (サーバー、名前、ポート、ユーザー名、パスワード) を定義するだけのサーバー オブジェクトがあり、次のオブジェクトは mysql_init() を呼び出す接続オブジェクトです。これを行う方法についての手がかりはありますか?

ところで:カール・クラフトとチルカットの男は、後世のために血を保存する必要があります. 彼らは私に多くの時間を節約しました。

前もって感謝します。

4

1 に答える 1

0

これを理解するのにしばらく時間がかかりました。MySQL クライアントでは、'localhost' への接続を指定すると、/tmp/mysql.sock または /var/lib/mysql.sock の UNIX ソケットに接続しようとします。ただし、localhost を 127.0.0.1 として指定すると、--protocol=TCP と同等の TCP プロトコルで接続します。

于 2013-03-27T16:56:27.397 に答える