[Seasar-user:13459] Re: [DBFlute] replace-schema実行時の 「table xxxxxx already exist」 エラーについて
a-hashimoto
[E-MAIL ADDRESS DELETED]
2008年 3月 28日 (金) 11:45:58 JST
橋本です。
原因がわかりました。
/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 メーリングリストの案内