2017-02-01 13 views
2

基本的にMySQL用のConnector Cドライバを使用してMySQLデータベースに接続しようとしています。私はLinuxシステム上でNetbeansにコードを書いています。しかし、ここでは謎です:私は自分のデータベースにデバッグモードでは接続できますが、リリースモードではありませんか? Linux上でIDEとしてNetbeansを使用しています。すべてのライブラリをセットアップし、プロジェクトプロパティのドロップダウンを使用してフォルダを組み込むので、プロパティがDebug ConfigurationとRelease Configurationに適用されます。デバッグでは実行しますが、実行時には実行しません - ???私はあなたの実際の接続コードを表示するコードを簡素化:私はデバッグでそれを実行するとCでMySQLデータベースに接続するためのLinux上のNetbeans

int readDB(void) { 
    MYSQL *mysql = NULL; 
    char *server = "localhost"; 
    char *user = "root"; 
    char *password = ""; 
    char *database = "myDB"; 
    int port = 3306; 

    mysql = mysql_init(mysql); 

    if (!mysql) { 
     puts("Init failed, out of memory?"); 
     return EXIT_FAILURE; 
    } else { 
     puts("SUCCESS!\n"); 
    } 

    if (!mysql_real_connect(mysql,server,user,password,database,port,NULL,0)) { 
     puts("Connect failed\n"); 
    } 

    return 1; 
} 

だから、それは「SUCCESS」と他には何を印刷します。私がそれを実行すると、 "成功"と "接続に失敗しました"が表示されます。私は迷っている。これはIDEの問題でしょうか? Linux上でうまく動作するC用の別のIDEがありますか?または、私は何かがかなり明白であることを逃しています

更新: 呼び出すmysql_error()は

を明らかにした "ソケット '/tmp/mysql.sock' を介してローカルのMySQLサーバーに接続できません(2)"

+0

なぜ明らか 'プット(mysql_error(mysqlの))上のソケットを作成するには、サーバーの設定を変更することです;' ?? – e4c5

+1

HaHa !!あなたはC/MySQLのnoobを扱っているので、明らかにメニューにはありません;しかし、あなたの提案はいくつかの新しい陰謀を作り出しました。エラーは "ローカルMySQLサーバに接続できません '/tmp/mysql.sock'(2)"というエラーが表示されます。だから私はソケットの問題があるように見えます。私がGoogleマシンを掘り下げている間に、あなたがこれについて何か知っていれば教えてください。どうも! – sax

答えて

2

Cを含むほとんどの言語でmysqlクライアントライブラリを使用する場合、ホスト名がlocalhostと指定されている場合、クライアントライブラリはUNIXドメインソケットを介して接続しようとします。あなたは、はい、彼らはunix_socketがNULLでない場合、文字列は、使用するソケットまたは名前付き パイプを指定する一つの同じbut

ある127.0.0.1

としてホスト名を指定することにより、TCP/IPを使用して接続を強制することができます。 hostパラメータは、 接続のタイプを決定することに注意してください。

また、mysqlの設定を調べて、サーバの起動時にソケットが作成された場所を調べて、unix_socketパラメータとして使用することができます。

第3の選択肢は、/ tmpに/

+0

e4c5、あなたは確かな天才です!私は長く頑張って探していただろうし、これを思い付かないだろう。私はWindowsのユーザーで、データベースとバックエンド処理をLinuxに変換してお金を節約しています。私の頭は本当に泳いでいます。私は時間をとって助けてくれてありがとう! 127.0.0.1が私の答えだった – sax

+0

私は助けになって喜んでいる。あなたのプロジェクトでは最高のものです。 – e4c5

+1

Nice answer !!!私は127.0.0.1とlocalhostが異なる方法でmysqlによって解釈されたことを知らなかった –

関連する問題