2011-05-25 12 views
1

ここでは、mySQLデータベースにアクセスするjavaコードがあります。テーブルが存在するかどうかをチェックします。テーブルは削除されて存在しませんが、以下のコードはテーブルが存在すると示しています。MySQL RDMSにテーブルが存在するか確認する

private Boolean tableExists(String globalId) { 
    // schema Test 
    DBResult result = db.selectQuery("SELECT table_name 
             FROM information_schema.tables 
             WHERE table_schema = '"+schema+"' 
             AND table_name = " + "\'" + "category_"+globalId.split("-")[1]+ "\'"+";"); 
    if(result.getRowCount() > 0) { 
    logger.info(" Table exist "+globalId); 
    return true; 
    } else { 
    logger.info("table does not exist "+ globalId); 
    return false; 
    } 
} 

このメソッドは、テーブルが存在するとtrueを返します。後で、プログラムはテーブルが存在せず、クラッシュすることをキャッチします。問題は何ですか?プログラムはTomcat 6で動作します。

+0

私はあまり理解していませんが、[MySQLでINFORMATION_SCHEMAテーブルを使用しているときに同期の問題が発生しました](http://stackoverflow.com/questions/3169525/mysql-wtf-with-information-schema-tables) –

答えて

1

MySQLを再起動します。 (必要に応じてプロセスを終了します)。それはうまくいくはずです。

MySQLに同期の問題があります。

+0

これは、データベースでリアルタイムに何が起こっているのかわからない場合、このプログラミング方法は受け入れられないことを意味します。 – ucas

+0

まあ、私はそれについては分かりません。より多くの経験を持つ方がこれに答えることができます。 Btw、私のソリューションは動作しましたか? – Bhushan

+0

あなたのソリューションは動作しますが、これは私のプログラムには適していません。私のプログラムではこのエラーは受け入れられません。 – ucas