5

SSL を使用するように MySql を構成しましたが、PHP でうまく機能しました。しかし、C/C++ プログラムでデータベースに接続しようとすると、うまくいきません。

変数:

host = "localhost"
psw = "pass"
db = "database"

SSL なし:

usr = "userNOSSL"
conn = mysql_init(NULL);
mysql_real_connect(conn, host, usr, psw, db, 0, NULL, 0);

これはうまくいきました。私は簡単にデータを取得できます:

query = "SELECT x FROM y"

mysql_query(conn, query);

result = mysql_store_result(conn);

num_fields = mysql_num_fields(result);

while ((row = mysql_fetch_row(result)))
{
    for(i = 0; i < num_fields; i++)
    {
        printf("%s ", row[i] ? row[i] : "NULL");
    }
    printf("\n");
}

mysql_free_result(result);

SSL あり (CLIENT_SSL タグ) :

usr = "userSSL"
conn = mysql_init(NULL);
mysql_real_connect(conn, host, usr, psw, db, 0, NULL, CLIENT_SSL);

エラー

エラー: "MYSQL *conn;" オブジェクトは「sslなし」のようなパラメーターを取得していません。したがって、例外が発生します。

A first chance of exception at 0x0f18c274 in test_Class.exe : 0xC0000005: 
Acces violation when reading on location 0x00000048.
An unhandled exception at 0x0f18c274 in test_Class.exe : 0xC0000005: 
Acces violation when reading on location 0x00000048.

この行で:

num_fields = mysql_num_fields(result);

私が行う場合、同じエラー:

mysql_ssl_set(.SOMEOPTIONTHERE.)
mysql_real_connect(conn, host, usr, psw, db, 0, NULL, 0);

前もって感謝します。

4

1 に答える 1

0

私の推測では、ローカル ホストが SSL を処理するように正しく設定されていない可能性があります。これを試してください: http://www.chriscalender.com/?tag=ssluserlocalhost

于 2013-04-05T22:29:50.233 に答える