[Seasar-user:13473] Re: [DBFlute] replace-schema実行時の 「table xxxxxx already exist」 エラーについて

kubo [E-MAIL ADDRESS DELETED]
2008年 3月 29日 (土) 00:03:23 JST


久保です。

橋本さん、こんばんは、

了解しました。
原因がわかってよかったです。
また何かありましたら聞いて下さい。
(ReplaceSchemaはドキュメントが足りてないですから...)

2008/3/28 a-hashimoto <[E-MAIL ADDRESS DELETED]>:
> 橋本です。
>  原因がわかりました。
>
>  /dfprop/databaseInfoMap.dfpropの[schema]の設定ミスが原因でした。
>
>  [schema]を'root'と設定していました。スミマセン。
>  imformation_schemaのTABLE_SCHEMAを確認したところミスに気が付きまし
>  た・・・。
>
>  久保さん、いろいろ調べていただいてありがとうございました。
>
>
>
>
>
>
>  >橋本です。
>  >
>  >
>  >>通常、そのSQLが実行される前に「DROP TABLE departments」が
>  >>実行されるはずなのですが、ログには登場していないでしょうか?
>  >>(ログを一部抜粋して頂けるとありがたいです)
>  >申し訳ないです。以下ログの抜粋です。
>  >処理開始から1つ目のテーブルのエラーまでの抜粋です。
>  >
>  >
>  >2008-03-27 21:13:39,375 [main] DEBUG (DfAntTaskUtil#getBuildProperties
>  >():62) - Using contextProperties file: C:\kaihastu\tomcat5.5\workspace\
>  >dbflute_sample\mydbflute\dbflute-0.6.7\build.properties
>  >2008-03-27 21:13:39,390 [main] DEBUG (DfAntTaskUtil#getBuildProperties
>  >():90) - [Properties]: size=7
>  >2008-03-27 21:13:39,390 [main] DEBUG (DfAntTaskUtil#getBuildProperties
>  >():94) -     torque.packageBase = sample.dbflute
>  >2008-03-27 21:13:39,390 [main] DEBUG (DfAntTaskUtil#getBuildProperties
>  >():94) -     torque.database = mysql
>  >2008-03-27 21:13:39,390 [main] DEBUG (DfAntTaskUtil#getBuildProperties
>  >():94) -     torque.s2daoVersion = 1.0.47
>  >2008-03-27 21:13:39,390 [main] DEBUG (DfAntTaskUtil#getBuildProperties
>  >():94) -     torque.targetLanguage = java
>  >2008-03-27 21:13:39,390 [main] DEBUG (DfAntTaskUtil#getBuildProperties
>  >():94) -     torque.project = dbflute_sample
>  >2008-03-27 21:13:39,390 [main] DEBUG (DfAntTaskUtil#getBuildProperties
>  >():94) -     torque.daoSqlFileEncoding = UTF-8
>  >2008-03-27 21:13:39,406 [main] DEBUG (DfAntTaskUtil#getBuildProperties
>  >():94) -     torque.jdbcToJavaNativeMap = map:{TINYINT=java.lang.
>  >Integer;SMALLINT=java.lang.Integer;INTEGER=java.lang.Integer;BIGINT=java.
>  >lang.Long}
>  >2008-03-27 21:13:39,421 [main] INFO  (DfSimpleDataSourceCreator#create
>  >():99) - ...create()
>  >2008-03-27 21:13:39,421 [main] INFO  (DfReplaceSchemaTask#doExecute():
>  >72) - * * * * * * * * * * *
>  >2008-03-27 21:13:39,437 [main] INFO  (DfReplaceSchemaProperties#
>  >getReplaceSchemaDefinitionMap():31) - ...Initializing
>  >replaceSchemaDefinitionMap: {}
>  >2008-03-27 21:13:39,437 [main] INFO  (DfReplaceSchemaTask#doExecute():
>  >73) - environmentType: ut
>  >2008-03-27 21:13:39,437 [main] INFO  (DfReplaceSchemaTask#doExecute():
>  >74) - * * * * * * * * * * *
>  >2008-03-27 21:13:39,437 [main] INFO  (DfReplaceSchemaTask#doExecute():
>  >75) - isReplaceSchemaAutoCommit    = true
>  >2008-03-27 21:13:39,437 [main] INFO  (DfReplaceSchemaTask#doExecute():
>  >76) - isReplaceSchemaRollbackOnly  = false
>  >2008-03-27 21:13:39,437 [main] INFO  (DfReplaceSchemaTask#doExecute():
>  >77) - isReplaceSchemaErrorContinue = true
>  >2008-03-27 21:13:39,687 [main] INFO  (DfGeneratedSqlExecutorImpl#execute
>  >():40) - ...Generating SQL:
>  >select concat('TRUNCATE TABLE ', table_name, ';') as "sql"
>  >  from information_schema.tables
>  > where table_schema = 'root' and table_type = 'BASE TABLE';
>  >
>  >2008-03-27 21:13:39,687 [main] INFO  (DfGeneratedSqlExecutorImpl#execute
>  >():40) - ...Generating SQL:
>  >select concat('ALTER TABLE ', table_name, ' DROP FOREIGN KEY ',
>  >constraint_name, ';') as "sql"
>  >  from information_schema.table_constraints
>  > where table_schema = 'root' and constraint_type='foreign key';
>  >
>  >2008-03-27 21:13:39,687 [main] INFO  (DfGeneratedSqlExecutorImpl#execute
>  >():40) - ...Generating SQL:
>  >select concat('DROP TABLE IF EXISTS ', table_name, ';') as "sql"
>  >  from information_schema.tables
>  > where table_schema = 'root' and table_type = 'BASE TABLE';
>  >
>  >2008-03-27 21:13:39,703 [main] DEBUG (DfSqlFileFireMan#execute():23) - /
>  >************************************************************************
>  >************
>  >2008-03-27 21:13:39,703 [main] DEBUG (DfSqlFileFireMan#execute():35) -
>  >2008-03-27 21:13:39,703 [main] DEBUG (DfSqlFileFireMan#execute():36) - _
>  >/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
>  >/_/_/_/_/_/_/_/_/_/_/_/
>  >2008-03-27 21:13:39,703 [main] DEBUG (DfSqlFileFireMan#execute():37) -
>  >sqlFile: .\playsql\replace-schema.sql
>  >2008-03-27 21:13:39,703 [main] DEBUG (DfSqlFileFireMan#execute():38) - _
>  >/_/_/_/
>  >2008-03-27 21:13:39,703 [main] INFO  (DfSqlFileRunnerBase#traceSql():
>  >128) - CREATE TABLE departments ( id INTEGER UNSIGNED NOT NULL
>  >AUTO_INCREMENT, code VARCHAR(255) NULL, name VARCHAR(255) NULL, PRIMARY
>  >KEY(id) )
>  >2008-03-27 21:13:39,718 [main] WARN  (DfSqlFileRunnerExecute#execSQL():
>  >36) - Failed to execute: CREATE TABLE departments ( id INTEGER UNSIGNED
>  >NOT NULL AUTO_INCREMENT, code VARCHAR(255) NULL, name VARCHAR(255) NULL,
>  >PRIMARY KEY(id) )
>  >com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'departments'
>  >already exists
>  >       at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
>  >       at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
>  >       at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
>  >       at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
>  >       at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
>  >       at com.mysql.jdbc.Connection.execSQL(Connection.java:3099)
>  >       at com.mysql.jdbc.Statement.execute(Statement.java:695)
>  >       at org.seasar.dbflute.helper.jdbc.sqlfile.DfSqlFileRunnerExecute.
>  >execSQL(DfSqlFileRunnerExecute.java:29)
>  >       at org.seasar.dbflute.helper.jdbc.sqlfile.DfSqlFileRunnerBase.
>  >runTransaction(DfSqlFileRunnerBase.java:75)
>  >       at org.seasar.dbflute.helper.jdbc.sqlfile.DfSqlFileFireMan.
>  >execute(DfSqlFileFireMan.java:41)
>  >       at org.seasar.dbflute.task.DfReplaceSchemaTask.replaceSchema
>  >(DfReplaceSchemaTask.java:166)
>  >       at org.seasar.dbflute.task.DfReplaceSchemaTask.doExecute
>  >(DfReplaceSchemaTask.java:81)
>  >       at org.seasar.dbflute.task.bs.DfAbstractTask.execute
>  >(DfAbstractTask.java:69)
>  >       at org.apache.tools.ant.UnknownElement.execute(UnknownElement.
>  >java:288)
>  >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>  >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>  >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
>  >Source)
>  >       at java.lang.reflect.Method.invoke(Unknown Source)
>  >       at org.apache.tools.ant.dispatch.DispatchUtils.execute
>  >(DispatchUtils.java:105)
>  >       at org.apache.tools.ant.Task.perform(Task.java:348)
>  >       at org.apache.tools.ant.Target.execute(Target.java:357)
>  >       at org.apache.tools.ant.Target.performTasks(Target.java:385)
>  >       at org.apache.tools.ant.Project.executeSortedTargets(Project.
>  >java:1329)
>  >       at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
>  >       at org.apache.tools.ant.helper.DefaultExecutor.executeTargets
>  >(DefaultExecutor.java:41)
>  >       at org.apache.tools.ant.Project.executeTargets(Project.java:
>  >1181)
>  >       at org.apache.tools.ant.Main.runBuild(Main.java:698)
>  >       at org.apache.tools.ant.Main.startAnt(Main.java:199)
>  >       at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
>  >       at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
>  >2008-03-27 21:13:39,718 [main] WARN  (DfSqlFileRunnerExecute#execSQL():
>  >37) -
>  >
>  >
>  >
>  >
>  >
>  >>ちなみにこちらMySQLのDBFluteExampleです。(SVN)
>  >>https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-mysql-example
>  >ありがとうございます。早速動かしてみます。
>  >
>  >
>  >
>  >>久保です。
>  >>
>  >>>  ログを確認しました。SQL文は、
>  >>>
>  >>>  CREATE TABLE departments ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
>  >>> code
>  >>>  VARCHAR(255) NULL, name VARCHAR(255) NULL, PRIMARY KEY(id) )
>  >>>
>  >>>  です。
>  >>
>  >>なるほど、了解です。
>  >>通常、そのSQLが実行される前に「DROP TABLE departments」が
>  >>実行されるはずなのですが、ログには登場していないでしょうか?
>  >>(ログを一部抜粋して頂けるとありがたいです)
>  >>
>  >>
>  >>ちなみにこちらMySQLのDBFluteExampleです。(SVN)
>  >>https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-mysql-example
>  >>
>  >>特にMySQLでReplaceSchemaで該当のエラーは
>  >>出たことないのですが。。。
>  >>
>  >>2008/3/27 Atsushi Hashimoto <[E-MAIL ADDRESS DELETED]>:
>  >>> 橋本です。
>  >>>  久保さん、ご返信ありがとうございます。
>  >>>
>  >>>
>  >>>  ><A>
>  >>>  > /playsql/replace-schema.sqlにMySQL用の「テーブル3つ」の
>  >>>  > CREATE文を設定されているのでしょうか?
>  >>>  はい、そうです。テーブルに手を加えたときは/playsql/replace-schema.sqlを更
>  >>> 新(または上書き)して/replace-schema.batを実行しています。
>  >>>
>  >>>
>  >>>  > <B>
>  >>>  > 「table xxxxxx already exist」
>  >>>  > は、直前のログを確認頂けますでしょうか?
>  >>>  > この例外が発生したSQLが出力されているかと思います。
>  >>>  ログを確認しました。SQL文は、
>  >>>
>  >>>  CREATE TABLE departments ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
>  >>> code
>  >>>  VARCHAR(255) NULL, name VARCHAR(255) NULL, PRIMARY KEY(id) )
>  >>>
>  >>>  です。
>  >>>
>  >>>
>  >>>  念のため、ログファイルと/playsql配下に置いているreplace-schema.sqlを添付
>  >>> し
>  >>> ます。
>  >>>
>  >>>  お手数おかけしますがよろしくお願いします。
>  >>>
>  >>>
>  >>>
>  >>>
>  >>>  ----- Original Message -----
>  >>>  From: "kubo" <[E-MAIL ADDRESS DELETED]>
>  >>>  To: <[E-MAIL ADDRESS DELETED]>
>  >>>  Sent: Thursday, March 27, 2008 8:18 PM
>  >>>  Subject: [Seasar-user:13448] Re:[DBFlute] replace-schema螳溯。梧凾縺ョ 縲
>  >>> 荊able
>  >>>  xxxxxx already exist縲・繧ィ繝ゥ繝シ縺ォ縺、縺・※
>  >>>
>  >>>
>  >>>  > 久保です。
>  >>>  >
>  >>>  > 橋本さん、こんにちは
>  >>>  >
>  >>>  > 取り急ぎ環境の確認をさせてください。
>  >>>  >
>  >>>  > <A>
>  >>>  > /playsql/replace-schema.sqlにMySQL用の「テーブル3つ」の
>  >>>  > CREATE文を設定されているのでしょうか?
>  >>>  >
>  >>>  > <B>
>  >>>  > 「table xxxxxx already exist」
>  >>>  > は、直前のログを確認頂けますでしょうか?
>  >>>  > この例外が発生したSQLが出力されているかと思います。
>  >>>  >
>  >>>  >
>  >>>  >
>  >>>  > #
>  >>>  > # ReplaceSchemaについて(参考)
>  >>>  > # http://d.hatena.ne.jp/jflute/20070823/1187797483
>  >>>  > #
>  >>>  >
>  >>>  > 2008/3/27 Atsushi Hashimoto <[E-MAIL ADDRESS DELETED]>:
>  >>>  >> お世話になっております。橋本です。
>  >>>  >>  DBFluteにのreplace-schemaタスクについての質問です。
>  >>>  >>
>  >>>  >>  2度目以降のreplace-schemaの実行で「table xxxxxx already exist」のエ
>  >>> ラーが発生します。
>  >>>  >>  以前、H2で動かしていた際にはエラーは出ていなかったのですが、今回、接
>  >>> 続
>  >>> 先データベースをMySQLに変更したところ発生するようになりました。
>  >>>  >>
>  >>>  >>  変更の際の設定に不備があるのかと思い、テーブル3つほどの簡単なデータ
>  >>> ベースを作成し、
>  >>>  >>
>  >>>  >>  1. [新規]→[プロジェクト]→[chura-project] から S2Dao only でプロジ
>  >>> ェ
>  >>> クト作成
>  >>>  >>
>  >>>  >>  2. [新規]→[DBFlute client Directory]でDatabaseをmysqlに設定
>  >>>  >>
>  >>>  >>  上記を行い試してみましたがやはり2度目以降のreplace-schemaで「table
>  >>> xxxxx
>  >>>  >>  already exist」が発生します。
>  >>>  >>  MySQL用の設定等が必要なのでしょうか?
>  >>>  >>
>  >>>  >>  DBFlute:バージョン0.6.7
>  >>>  >>  MySQL:バージョン5.0.51
>  >>>  >>
>  >>>  >>  以上、よろしくお願いいたします。
>  >>>  >>
>  >>>  >>
>  >>>  >>  _______________________________________________
>  >>>  >>  Seasar-user mailing list
>  >>>  >>  [E-MAIL ADDRESS DELETED]
>  >>>  >>  https://ml.seasar.org/mailman/listinfo/seasar-user
>  >>>  >>
>  >>>  > _______________________________________________
>  >>>  > Seasar-user mailing list
>  >>>  > [E-MAIL ADDRESS DELETED]
>  >>>  > https://ml.seasar.org/mailman/listinfo/seasar-user
>  >>>  >
>  >>>  >
>  >>>
>  >>> _______________________________________________
>  >>>  Seasar-user mailing list
>  >>>  [E-MAIL ADDRESS DELETED]
>  >>>  https://ml.seasar.org/mailman/listinfo/seasar-user
>  >>>
>  >>>
>  >>_______________________________________________
>  >>Seasar-user mailing list
>  >>[E-MAIL ADDRESS DELETED]
>  >>https://ml.seasar.org/mailman/listinfo/seasar-user
>  >_______________________________________________
>  >Seasar-user mailing list
>  >[E-MAIL ADDRESS DELETED]
>  >https://ml.seasar.org/mailman/listinfo/seasar-user
>
>  _______________________________________________
>  Seasar-user mailing list
>  [E-MAIL ADDRESS DELETED]
>  https://ml.seasar.org/mailman/listinfo/seasar-user
>


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