crontab を使用して、毎日いくつかのプログラムを自動的に実行しています。7日前から、プログラムの1つを自動的に(毎日午前3時に)実行して、データベースのテーブルに文字列(数字と英語と英語以外の文字を含む)を挿入すると、数字と英語の文字(ASCII文字)のみが挿入されますデータベースですが、それ以前は正常に機能していました。しかし、自分でプログラムを実行すると、他の文字もテーブルに挿入されます。
一方、午前2時にcrontabを使用して別のプログラムを実行すると、同じデータベース(ただし異なるテーブル)にいくつかの文字列が挿入されますが、正常に動作し、すべての文字(英語と英語以外)がデータベースに挿入されます。
サーバー OS は最小の centOS 6.3 で、MySql Database 5.1.61 を使用しています。データベースの照合順序は utf8-utf8_general_csi です。両方のプログラムで、Java とその jdbc ライブラリを使用しています。
私はcrontabでのみ疑われています。どんな助けにも感謝します。
編集:
これが私が作ったcrontabです:
0 2 * * * java -jar file.jar arg1 arg2 arg3
4 15 * * * java -jar file3.jar arg1 arg2 args3
0 3 * * * java -jar file2.jar arg1 arg2 arg3
.2 at 3 で実行されるプログラムは、同じ機能を持っています。ただし、3 (file2.jar) のファイルを実行すると、英語以外の文字は挿入されません。
そして、ここに私がDBに挿入するコードの一部があります:
stmt = (Statement) con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE) ;
stmt.executeUpdate("set character_set_results=utf8");
stmt.executeUpdate("set character_set_filesystem=utf8");
try
{
rs.moveToInsertRow();
rs.updateString("f1", str1);
rs.updateString("f2", str2);
rs.updateFloat("f3", fl1));
rs.insertRow();
}
catch(Exception ex)
{
}