我已经将 MySql 配置为使用 SSL,它在 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);
提前致谢。