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

a-hashimoto [E-MAIL ADDRESS DELETED]
2008年 3月 28日 (金) 09:34:19 JST


橋本です。


>通常、その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 メーリングリストの案内