最初のクエリを実行すると、mysql_real_query
は1を返します。これは正常です。mysql_errno()とmysql_error()を呼び出してエラーに関する情報を取得する必要があります。しかし、なぜmysql_error()はNULL文字列を返しますか?mysql_real_queryは1を返し、mysql_errorはNULL文字列を返します。
2番目のクエリまたはmysql_pingを実行した後、私は違反例外を受け取ります。 何が起こっているのか?
また、C++プログラムでC++コネクタを使用しているか、Cコネクタ(これは私が使用しているもの)も同様に動作する必要があります。私はそれを動作させるためにコンパイラの下でコンパイルする必要がありますか?
私が使用しているコードの一部ですが、これは誰かが私に解決策を突き止める助けになるかもしれません。私はここで何が間違っているのか分からない。
char req[50];
static char *serverOptions_p[] = {
"abc",
"--datadir=C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/data/abc",
"--language=C:/Program Files/MySQL/MySQL Server 5.5/share/english",
NULL
};
int numElements = sizeof (serverOptions_p)/sizeof(char *) - 1;
static char *serverGroups_p[] = { "mysql_server", NULL };
if (mysql_library_init(numElements, serverOptions_p, (char **) serverGroups_p)) {
return;
}
d_connectionHandle_p = mysql_init(NULL);
if (d_connectionHandle_p) {
my_bool mb = true;
mysql_options(d_connectionHandle_p, MYSQL_OPT_RECONNECT, &mb);
if (mysql_real_connect(d_connectionHandle_p, server_p, user_p, password_p, database_p, 0, NULL, 0)) {
sprintf(req, "CREATE DATABASE %s", database_p);
mysql_real_query(d_connectionHandle_p, requete, strlen(requete));
}
}
else {
return;
}
int e;
strcpy(req, "SELECT * FROM test");
if ((e = mysql_real_query(d_connectionHandle_p, req, strlen(req))) != 0) { // This is where it returns 1
const char *err = mysql_error(d_connectionHandle_p); // Returns an empty string
if (err)
{
}
}
のご質問の一つに答えるために、いや、C++におけるCのMySQLのコネクタを使用しても問題はありません。 –
あなたは何とかこの作業をしましたか?私はまったく同じ状況にあります。 –
私の場合は、誤って指定されたクエリ文字列(mysql_real_queryの3番目の引数)の長さにすぎません。 –