- - PR -
Postgre7.2.1でInsertしたい
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-07-22 13:27
誤解を招きやすい書き込みで失礼しました。
はい、データベースに存在するレコードと同一のUSR_IDを持つデータは入れてないです。入れた場合は「すでに登録済み」とエラーページに飛ばすようにしてます。 今日も朝からずっとソースをいじったり、テストしてたのですが、TOMCAT起動時は実行されやすいというだけで、必ずしも正常に追加されるわけではないみたいでした。起動しなおせばできるものと思ってやっていたら、やっぱりできないこともありました。DBサーバが不安定みたいです。とにかくテストしてみても「このときだけではできる!」と断言できる状態がありませんでした。同じ状態・条件でも、たまになぜか出来たり、それ以降にすると全くできないとかです。 これは新人研修の一環で、本社の研修講師から社内システムを作る課題を与えられていました。最初のうちはメールやチャットで講師から教わってたのですが、開始3日目くらいから講師が急遽相当忙しいプロジェクトに行ってしまったそうです。最近はメールで質問しても全く返事が返ってこなくなりました。また社内の先輩はみんなパートナー会社に出てしまって帰ってきませんし、たまに社内に帰ってくる先輩はJavaやPostgreを知らない方なので、こちらのBBSを頼らざるを得ませんでした。 DBも本当ならLinuxにサーバを立ててやりたいところでしたが、支社内にDBサーバの構築できる余ってるPCがないとのことで、各自PCにDBソフトをインストールして行うしかありませんでした。誰にも聞けないのでJSPのエラーを出してくれるEclipseが使える環境でやりたいとWindowsで行いました。 やはりこのWindows版Postgreの資料もないままでの作業は困難だし、予定では今週末に講師が復帰するはずなので、復帰を待って講師に現状を説明することにします。環境が整わない中どうしていいか分からなくなり、エラーの現状説明も曖昧になってしまってすみませんでした。皆さんどうもありがとうございました。 | ||||
|
投稿日時: 2004-07-22 13:52
色々大変ですね。 私もまだ経験不足で苦労してます。 ^^
誤解して申し訳ありませんでした。 私のほうでPostgresql-7.2.1をインストールして実行してみましたが普通に動きましたが。。。 私がテストで........... JAVAソース (mainで引数をもらって入れるだけです。PKだけが重複しないようにしました。) import java.sql.*; public class DBTest { public static void main(String[] args) { Connection conn = null; String url = "jdbc:postgresql://localhost:5432/template1"; String user = "XXX"; String pwd = ""; try{ Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection(url, user, pwd ); String sql = null; Statement stmt = null; stmt = conn.createStatement(); sql = "insert into USR values('" + args[0] + "','aaa','111')"; //<-USRって””なしでもOKでしたよ。 int rs = stmt.executeUpdate(sql); System.out.println("rs : " + String.valueOf(rs)); stmt.close(); conn.close(); } catch( Exception e ) { stmt.close(); conn.close(); System.err.println(e); return; } return; } } 実行:java DBTest 002 DB table 作成 create table USR(user_id varchar(16) PRIMARY KEY UNIQUE, name varchar(16) not null, pass varchar(16) not null); こんな感じでやってみましたが普通にできましたよ。 なぜseason様の場合。。。Table名に””が必要だったかはよく解りませんね。 season様もDBTable作成文など色々環境に関して教えてくれれば もっと確実な原因究明ができると思います。 > [ メッセージ編集済み 編集者: MUSE 編集日時 2004-07-22 16:03 ] | ||||
|
投稿日時: 2004-07-22 14:36
焼きそばです。
はずしていたら申し訳ありません。 もしかしたらDBを再起動した直後の1回だけ成功すると いうことはないですか? コネクションがうまく切れていないような気がするので。 | ||||
|
投稿日時: 2004-07-22 15:53
私も焼きそばさんの意見と同じです。
・(論理的な)コネクションがクローズされていない。 ・Statementがクローズされていない。 ・ResultSetがクローズされていない。 ・コミットが行われていない。 などを確認してみてはどうでしょうか? (コミットが行われていなかったら1回目もうまくいかない気がするので これは違うかな?) | ||||
|
投稿日時: 2004-07-22 16:11
私も最初クローズされてないからかなと思いましたけど
私も急いでソース作成して実行してみたので Conのクローズもstmtのクローズもしてなかったですが 普通に動きましたよ。 30回やっても大丈夫でしたので他に原因があるとも思われますね。 一体なんでしょう。 T.T | ||||
|
投稿日時: 2004-07-22 16:14
そういえば、最初にあれっと思ったのに質問するのを忘れてました。
ConDBってなんのクラスですか? | ||||
|
投稿日時: 2004-07-22 16:34
焼きそばです。
そうですか。 postmasterがマルチユーザーではないのかなとも思ったのですが。 | ||||
|
投稿日時: 2004-07-22 17:05
単なるSQL文法の問題です。 http://www.postgresql.jp/document/pg743doc/html/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS 「4.1.1. 識別子とキーワード」の最後の段落をよく読みましょう。 | ||||
