mysql:12841
From: "ot" <"ot" <shezo@xxxxxxxxxx>>
Date: Tue, 7 Mar 2006 13:28:38 +0900
Subject: [mysql 12841] Windows2000とC API
はじめまして。MySQL初心者の太田と申します。
コマンドラインやQueryBrowserを使っての初歩的な操作は一通りできます。
今回、Windows2000 pro VC++ で C APIを使ってMySQLを弄ろうと思い、以下のような
コードを書いたのですが、
{
MYSQL SQL;
mysql_init( &SQL );
if( mysql_real_connect( &SQL, HOST, USER, PASS, DB, PORT, NULL, 0 ) ==
NULL ){
printf( "Error %s\n", mysql_error( &SQL ) );
};
mysql_close( &SQL );
}
Error Can't create TCP/IP socket (10106)
と言うエラーが帰ってきます。
コマンドプロンプトで同じ情報を入力した場合には正常に動作します。
そこで色々と調べて、これが正しい方法かは解らないのですが、
NT系ではnamed-pipeを使うと上手く行くと言うような記事を見つけたので以下の様に
修正したところ、
{
MYSQL SQL;
mysql_init( &SQL );
mysql_options( &SQL ,MYSQL_OPT_NAMED_PIPE ,0 );
if( mysql_real_connect( &SQL, ".", USER, PASS, DB, PORT, "MySQL", 0
) == NULL ){
printf( "Error %s\n", mysql_error( &SQL ) );
}
mysql_close( &SQL );
}
今度は、
Error Can't open named pipe to host: . pipe: MySQL (2)
と言うエラーが帰ってきました。
これはコマンドプロンプトの方でも出たので、調べたところhost=localhostを設定し
ていないと正常に
動作しないバグがあるらしく、
mysql -h . -u user -p --host=localhost
としたところ、正常に接続できました。
そこで、Cの方でも同じ設定にするために、
my.cnfをVC++プロジェクトのルートディレクトリに作成して、
[client]
host = localhost
と書いて保存し、
{
MYSQL SQL;
imysql_init( &SQL );
mysql_options( &SQL ,MYSQL_OPT_NAMED_PIPE ,0 );
mysql_options( &SQL ,MYSQL_READ_DEFAULT_FILE , "./my.cnf" );
mysql_options (&SQL ,MYSQL_READ_DEFAULT_GROUP , "host" );
if( mysql_real_connect( &SQL, ".", USER, PASS, DB, PORT, "MySQL", 0 ) ==
NULL ){
printf( "Error %s\n", mysql_error( &SQL ) );
}
mysql_close( &SQL );
}
としたところ、やはり上と同じエラーが返ってきます。
MySQLのところをNULLにしても結果は同じでした。
これ以上は何を調べたら良いのかもわからないので、詳しい方がいらしゃいましたら
ご教唆くださいm(_ _)m