[Seasar-user:6046] [S2Dao]daoのテストでエラー(テーブルが見つからない)

satoh [E-MAIL ADDRESS DELETED]
2007年 2月 6日 (火) 17:04:15 JST


佐藤徹太郎です。お世話になっております。



Dolteng 0.16.1でChuraProject(Teeda+S2Dao)を作り、daoをJUnitでテストしたらエ
ラーが出ます。

障害トレースには下記のように表示されます。



org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外
(ErrorCode=42102, SQLState=42S02)が発生しました。理由はorg.seasar.framework.
exception.SSQLException: [ESSR0072]SQLで例外(SQL=[select shelfNumber,
rowNumber from book where id=?], ErrorCode={1}, SQLState={2})が発生しました

              at
org.seasar.extension.jdbc.util.ConnectionUtil.prepareStatement(ConnectionUti
l.java:52)

              at
org.seasar.extension.jdbc.impl.BasicStatementFactory.createPreparedStatement
(BasicStatementFactory.java:34)

              at
org.seasar.extension.jdbc.impl.BasicHandler.prepareStatement(BasicHandler.ja
va:95)

              at
org.seasar.extension.jdbc.impl.BasicSelectHandler.prepareStatement(BasicSele
ctHandler.java:146)

              at
org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler
.java:131)

              at
org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler
.java:120)

              at
org.seasar.dao.impl.SelectDynamicCommand.execute(SelectDynamicCommand.java:5
5)

              at
org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:53
)

              at
book.chura.dao.BookInfoDao$$EnhancedByS2AOP$$e34726$$MethodInvocation$$findB
ookPosition0.proceed(MethodInvocationClassGenerator.java)

              at
org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceIntercept
or.java:59)

              at
book.chura.dao.BookInfoDao$$EnhancedByS2AOP$$e34726$$MethodInvocation$$findB
ookPosition0.proceed(MethodInvocationClassGenerator.java)

              at
book.chura.dao.BookInfoDao$$EnhancedByS2AOP$$e34726.findBookPosition(BookInf
oDao$$EnhancedByS2AOP$$e34726.java)

              at
book.chura.dao.ReturnBookDaoTest.testFindBookPosition(ReturnBookDaoTest.java
:36)

              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

              at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)

              at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)

              at java.lang.reflect.Method.invoke(Method.java:585)

              at junit.framework.TestCase.runTest(TestCase.java:164)

              at
org.seasar.framework.unit.S2FrameworkTestCase.doRunTest(S2FrameworkTestCase.
java:305)

              at
org.seasar.extension.unit.S2TestCase.doRunTest(S2TestCase.java:92)

              at
org.seasar.framework.unit.S2FrameworkTestCase.runBare(S2FrameworkTestCase.ja
va:190)

              at junit.framework.TestResult$1.protect(TestResult.java:106)

              at
junit.framework.TestResult.runProtected(TestResult.java:124)

              at junit.framework.TestResult.run(TestResult.java:109)

              at junit.framework.TestCase.run(TestCase.java:120)

              at junit.framework.TestSuite.runTest(TestSuite.java:230)

              at junit.framework.TestSuite.run(TestSuite.java:225)

              at
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3T
estReference.java:128)

              at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:3
8)

              at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRu
nner.java:460)

              at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRu
nner.java:673)

              at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.
java:386)

              at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner
.java:196)

Caused by: org.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外
(SQL=[select shelfNumber, rowNumber from book where id=?], ErrorCode={1},
SQLState={2})が発生しました

              at
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.wrapException(Connectio
nWrapperImpl.java:526)

              at
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.prepareStatement(Connec
tionWrapperImpl.java:144)

              at
org.seasar.extension.jdbc.util.ConnectionUtil.prepareStatement(ConnectionUti
l.java:50)

              ... 32 more

Caused by: org.h2.jdbc.JdbcSQLException: Table BOOK not found; SQL
statement: select shelfNumber, rowNumber from book where id=? [42S02-30]

org.h2.jdbc.JdbcSQLException: Table BOOK not found; SQL statement: select
shelfNumber, rowNumber from book where id=? [42S02-30]

              at org.h2.message.Message.addSQL(Message.java:338)

              at org.h2.command.Parser.parse(Parser.java:224)

              at org.h2.command.Parser.prepareCommand(Parser.java:189)

              at org.h2.engine.Session.prepareLocal(Session.java:170)

              at org.h2.server.TcpServerThread.process(TcpServerThread.java:
200)

              at org.h2.server.TcpServerThread.run(TcpServerThread.java:127)

              at java.lang.Thread.run(Thread.java:595)

org.h2.jdbc.JdbcSQLException: Table BOOK not found [42S02-30]

              at org.h2.message.Message.getSQLException(Message.java:67)

              at org.h2.message.Message.getSQLException(Message.java:49)

              at org.h2.schema.Schema.getTableOrView(Schema.java:199)

              at org.h2.command.Parser.readTableFilter(Parser.java:704)

              at
org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1162)

              at org.h2.command.Parser.parseSelectSimple(Parser.java:1229)

              at org.h2.command.Parser.parseSelectSub(Parser.java:1156)

              at org.h2.command.Parser.parseSelectUnion(Parser.java:1043)

              at org.h2.command.Parser.parseSelect(Parser.java:1036)

              at org.h2.command.Parser.parse(Parser.java:331)

              at org.h2.command.Parser.parse(Parser.java:218)

              at org.h2.command.Parser.prepareCommand(Parser.java:189)

              at org.h2.engine.Session.prepareLocal(Session.java:170)

              at org.h2.server.TcpServerThread.process(TcpServerThread.java:
200)

              at org.h2.server.TcpServerThread.run(TcpServerThread.java:127)

              at java.lang.Thread.run(Thread.java:595)

 [42S02-30]

              at org.h2.engine.SessionRemote.done(SessionRemote.java:288)

              at org.h2.command.CommandRemote.prepare(CommandRemote.java:40)

              at org.h2.command.CommandRemote.<init>(CommandRemote.java:54)

              at
org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:224)

              at
org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:946)

              at
org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:1082)

              at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.
java:135)

              at
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.prepareStatement(Connec
tionWrapperImpl.java:140)

              ... 33 more



コンソールには下記が表示されます。



DEBUG 2007-02-06 16:13:23,109 [main] クラス
(book.chura.dao.BookInfoDao[bookInfoDao])のコンポーネント定義を登録します

DEBUG 2007-02-06 16:13:23,234 [main] クラス
(book.chura.dao.RentInfoDao[rentInfoDao])のコンポーネント定義を登録します

DEBUG 2007-02-06 16:13:23,312 [main] BEGIN
book.chura.dao.BookInfoDao#findBookPosition(039911174)

DEBUG 2007-02-06 16:13:24,703 [main] 物理的なコネクションを取得しました

DEBUG 2007-02-06 16:13:24,703 [main] 論理的なコネクションを取得しました

WARN  2007-02-06 16:13:25,156 [main] テーブル(book)が見つかりません

DEBUG 2007-02-06 16:13:25,281 [main] 論理的なコネクションを閉じました

DEBUG 2007-02-06 16:13:25,406 [main] select shelfNumber, rowNumber from book
where id='039911174'

DEBUG 2007-02-06 16:13:25,406 [main] 論理的なコネクションを取得しました

DEBUG 2007-02-06 16:13:25,734 [main] 物理的なコネクションを閉じました

DEBUG 2007-02-06 16:13:25,734 [main] END
book.chura.dao.BookInfoDao#findBookPosition(039911174) Throwable:org.seasar.
framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外
(ErrorCode=42102, SQLState=42S02)が発生しました。理由はorg.seasar.framework.
exception.SSQLException: [ESSR0072]SQLで例外(SQL=[select shelfNumber,
rowNumber from book where id=?], ErrorCode={1}, SQLState={2})が発生しました



テーブルを作ったはずなのに「テーブル(book)が見つかりません」という表示がされ
ます。

テーブルを作った時の方法は、

プロジェクトを右クリック、H2をクリック、View DataBase Managerをクリック

Connectをクリック、SQL statementの枠の中にcreate table文を書きました。

このやり方で正しいのでしょうか?

ほかになにかH2の設定か何かしなければならないのでしょか?



よろしくお願いいたします。



-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://ml.seasar.org/archives/seasar-user/attachments/20070206/d4c86585/attachment.html 


Seasar-user メーリングリストの案内