Hi, I've got issue using import ant task.
First, my very simple database (MySQL) :
CREATE DATABASE IF NOT EXISTS test;
USE test;
--
-- Definition of table `groupes`
--
DROP TABLE IF EXISTS `groupes`;
CREATE TABLE `groupes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nom` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
--
-- Dumping data for table `groupes`
--
INSERT INTO `groupes` (`id`,`nom`) VALUES
(1,'Administrators'),
(2,'Users');
--
-- Definition of table `personnes`
--
DROP TABLE IF EXISTS `personnes`;
CREATE TABLE `personnes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nom` varchar(45) NOT NULL,
`prenom` varchar(45) NOT NULL,
`fk_groupe` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_personnes_groupes` (`fk_groupe`),
CONSTRAINT `FK_personnes_groupes` FOREIGN KEY (`fk_groupe`) REFERENCES
`groupes` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
--
-- Dumping data for table `personnes`
--
INSERT INTO `personnes` (`id`,`nom`,`prenom`,`fk_groupe`) VALUES
(1,'Robin','FX',1),
(2,'John','Doe',2);
then my export ant task :
<project name="cofaxddl" default="databaseToDdl" basedir=".">
<path id="project-classpath">
<fileset dir="lib">
<include name="**/*.jar"/>
<include name="**/*.zip"/>
</fileset>
</path>
<taskdef classname="org.apache.ddlutils.task.DatabaseToDdlTask"
name="databaseToDdl"
classpathref="project-classpath" />
<databaseToDdl usedelimitedsqlidentifiers="true"
modelname="example">
<database driverclassname="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"
username="root"
password="root"/>
<writeschematofile outputfile="schema.xml"/>
<writedatatofile outputfile="data.xml"
encoding="ISO-8859-1"/>
</databaseToDdl>
</project>
which produces :
C:\ant-ddl>ant -buildfile export.xml
Buildfile: export.xml
[databaseToDdl] Written schema to C:\ant-ddl\schema.xml
[databaseToDdl] Written data XML to fileC:\ant-ddl\data.xml
BUILD FAILED
Target "databaseToDdl" does not exist in the project "cofaxddl".
Total time: 10 seconds
(strange error on the target name ?)
here is the schema.xml :
<?xml version="1.0"?>
<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database">
<database name="example">
<table name="groupes">
<column name="id" primaryKey="true" required="true" type="INTEGER"
size="10" autoIncrement="true"/>
<column name="nom" primaryKey="false" required="true" type="VARCHAR"
size="45" autoIncrement="false"/>
</table>
<table name="personnes">
<column name="id" primaryKey="true" required="true" type="INTEGER"
size="10" autoIncrement="true"/>
<column name="nom" primaryKey="false" required="true" type="VARCHAR"
size="45" autoIncrement="false"/>
<column name="prenom" primaryKey="false" required="true" type="VARCHAR"
size="45" autoIncrement="false"/>
<column name="fk_groupe" primaryKey="false" required="false"
type="INTEGER" size="10" autoIncrement="false"/>
<foreign-key foreignTable="groupes" name="FK_personnes_groupes">
<reference local="fk_groupe" foreign="id"/>
</foreign-key>
</table>
</database>
here is the data.xml :
<?xml version="1.0" encoding="ISO-8859-1"?>
<data>
<groupes id="1" nom="Administrators"></groupes>
<groupes id="2" nom="Users"></groupes>
<personnes id="1" nom="Robin" prenom="FX" fk_groupe="1"></personnes>
<personnes id="2" nom="John" prenom="Doe" fk_groupe="2"></personnes>
</data>
Everything seems to be ok at this point
Now I'm trying to import with this task :
<project name="cofaxddl" default="ddlToDatabase" basedir=".">
<path id="project-classpath">
<fileset dir="lib">
<include name="**/*.jar"/>
<include name="**/*.zip"/>
</fileset>
</path>
<taskdef classname="org.apache.ddlutils.task.DdlToDatabaseTask"
name="ddlToDatabase"
classpathref="project-classpath"/>
<ddlToDatabase usedelimitedsqlidentifiers="true">
<database driverclassname="org.apache.derby.jdbc.ClientDriver"
url="jdbc:derby://localhost:1527/MyDbTest';"
username="root"
password="root"/>
<fileset dir=".">
<include name="*schema.xml"/>
</fileset>
<createdatabase failonerror="false"/>
<writeschematodatabase alterdatabase="true"
failonerror="false"/>
<writedatatodatabase datafile="data.xml"
/>
</ddlToDatabase>
</project>
which produces :
C:\ant-ddl>ant -buildfile import-derby.xml -v
Apache Ant version 1.7.0 compiled on December 13 2006
Buildfile: import-derby.xml
Detected Java version: 1.6 in: c:\jdk\6\jre
Detected OS: Windows 2000
parsing buildfile C:\ant-ddl\import-derby.xml with URI =
file:/C:/ant-ddl/import-derby.xml
Project base dir set to: C:\ant-ddl
[antlib:org.apache.tools.ant] Could not load definitions from resource
org/apache/tools/ant/antlib.xml. It could not be found.
[ddlToDatabase] Read schema file C:\ant-ddl\schema.xml
[ddlToDatabase] Created database
[ddlToDatabase] Executed 0 SQL command(s) with 0 error(s)
[ddlToDatabase] Written schema to database
BUILD FAILED
C:\ant-ddl\import-derby.xml:16: Could not parse or write data file
C:\ant-ddl\data.xml
at org.apache.ddlutils.task.Command.handleException(Command.java:81)
at
org.apache.ddlutils.task.WriteDataToDatabaseCommand.readSingleDataFile(WriteDataToDatabas
eCommand.java:222)
at
org.apache.ddlutils.task.WriteDataToDatabaseCommand.execute(WriteDataToDatabaseCommand.ja
va:161)
at
org.apache.ddlutils.task.DatabaseTaskBase.executeCommands(DatabaseTaskBase.java:337)
at
org.apache.ddlutils.task.DatabaseTaskBase.execute(DatabaseTaskBase.java:365)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
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:597)
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.helper.ProjectHelper2.parse(ProjectHelper2.java:140)
at
org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:96)
at org.apache.tools.ant.Main.runBuild(Main.java:683)
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)
Caused by: org.apache.ddlutils.DdlUtilsException:
java.net.MalformedURLException: unknown protocol:
c
at
org.apache.ddlutils.io.DatabaseDataIO.writeDataToDatabase(DatabaseDataIO.java:730)
at
org.apache.ddlutils.task.WriteDataToDatabaseCommand.readSingleDataFile(WriteDataToDatabas
eCommand.java:217)
... 17 more
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(URL.java:574)
at java.net.URL.<init>(URL.java:464)
at java.net.URL.<init>(URL.java:413)
at
org.apache.commons.digester.Digester.createInputSourceFromURL(Digester.java:1958)
at org.apache.commons.digester.Digester.parse(Digester.java:1804)
at
org.apache.ddlutils.io.DatabaseDataIO.writeDataToDatabase(DatabaseDataIO.java:726)
... 18 more
--- Nested Exception ---
org.apache.ddlutils.DdlUtilsException: java.net.MalformedURLException: unknown
protocol: c
at
org.apache.ddlutils.io.DatabaseDataIO.writeDataToDatabase(DatabaseDataIO.java:730)
at
org.apache.ddlutils.task.WriteDataToDatabaseCommand.readSingleDataFile(WriteDataToDatabas
eCommand.java:217)
at
org.apache.ddlutils.task.WriteDataToDatabaseCommand.execute(WriteDataToDatabaseCommand.ja
va:161)
at
org.apache.ddlutils.task.DatabaseTaskBase.executeCommands(DatabaseTaskBase.java:337)
at
org.apache.ddlutils.task.DatabaseTaskBase.execute(DatabaseTaskBase.java:365)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
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:597)
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.helper.ProjectHelper2.parse(ProjectHelper2.java:140)
at
org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:96)
at org.apache.tools.ant.Main.runBuild(Main.java:683)
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)
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(URL.java:574)
at java.net.URL.<init>(URL.java:464)
at java.net.URL.<init>(URL.java:413)
at
org.apache.commons.digester.Digester.createInputSourceFromURL(Digester.java:1958)
at org.apache.commons.digester.Digester.parse(Digester.java:1804)
at
org.apache.ddlutils.io.DatabaseDataIO.writeDataToDatabase(DatabaseDataIO.java:726)
... 18 more
Total time: 2 seconds
It seems that the data.xml file is not parsed.
What is wrong ?
Here are the .jar that I put in the lib folder :
commons-beanutils.jar
commons-betwixt-0.8.jar
commons-codec-1.3.jar
commons-collections-3.2.jar
commons-dbcp-1.2.2.jar
commons-digester-1.8.jar
commons-lang-2.3.jar
commons-logging-1.1.jar
commons-pool-1.3.jar
DdlUtils-1.0.jar
derby.jar
derbyclient.jar
hsqldb.jar
jakarta-oro-2.0.8.jar
log4j-1.2.15.jar
mysql-connector-java-3.1.8-bin.jar
Please help me.
Regards.
F.X ROBIN
Créez votre adresse électronique [EMAIL PROTECTED]
1 Go d'espace de stockage, anti-spam et anti-virus intégrés.