You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-user@db.apache.org by Guy Davis <da...@guydavis.ca> on 2006/02/07 16:09:49 UTC
DDL to Database task: no model name?
Hello,
Here are some more details on the error I'm getting when trying to
create tables from a schema XML file.
Here is the schema.xml file I'm trying to load (dumped from Oracle 9i)
using DatabaseToDdlTask.
<database>
<table name="DV_AREA">
<column name="AREA_ID" primaryKey="true" required="true"
type="VARCHAR" size="20" autoIncrement="false"/>
<column name="AREA_NAME" primaryKey="false" required="true"
type="VARCHAR" size="80" autoIncrement="false"/>
<column name="SECTOR_ID" primaryKey="false" required="true"
type="VARCHAR" size="20" autoIncrement="false"/>
<column name="ROW_CREATED_DATE" primaryKey="false"
required="false" type="TIMESTAMP" size="7" autoIncrement="false"/>
<column name="ROW_CREATED_BY" primaryKey="false" required="false"
type="VARCHAR" size="30" autoIncrement="false"/>
<column name="ROW_UPDATED_DATE" primaryKey="false"
required="false" type="TIMESTAMP" size="7" autoIncrement="false"/>
<column name="ROW_UPDATED_BY" primaryKey="false" required="false"
type="VARCHAR" size="30" autoIncrement="false"/>
<foreign-key foreignTable="DV_SECTOR" name="DV_AREA_FK">
<reference local="SECTOR_ID" foreign="SECTOR_ID"/>
</foreign-key>
<unique name="DV_AREA_PK">
<unique-column name="AREA_ID"/>
</unique>
</table>
... many more table defintions ...
</database>
Here's the Ant log output...
[ddl_to_db] Feb 7, 2006 8:03:56 AM org.apache.commons.digester.Digester
error
[ddl_to_db] SEVERE: Parse Error at line 2 column 11: Document root
element "database", must match DOCTYPE root "null".
[ddl_to_db] org.xml.sax.SAXParseException: Document root element
"database", must match DOCTYPE root "null".
[ddl_to_db] at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:172)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:382)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1652)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1931)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:795)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:878)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(XMLDocumentScannerImpl.java:1157)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
[ddl_to_db] at
org.apache.commons.digester.Digester.parse(Digester.java:1631)
[ddl_to_db] at org.apache.ddlutils.io.DatabaseIO.read(DatabaseIO.java:173)
[ddl_to_db] at
org.apache.ddlutils.task.DdlToDatabaseTask.readSingleSchemaFile(DdlToDatabaseTask.java:219)
[ddl_to_db] at
org.apache.ddlutils.task.DdlToDatabaseTask.readModel(DdlToDatabaseTask.java:160)
[ddl_to_db] at
org.apache.ddlutils.task.DatabaseTaskBase.execute(DatabaseTaskBase.java:193)
[ddl_to_db] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[ddl_to_db] at org.apache.tools.ant.Task.perform(Task.java:364)
[ddl_to_db] at org.apache.tools.ant.Target.execute(Target.java:341)
[ddl_to_db] at org.apache.tools.ant.Target.performTasks(Target.java:369)
[ddl_to_db] at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
[ddl_to_db] at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
[ddl_to_db] at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
[ddl_to_db] at
org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
[ddl_to_db] at
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
[ddl_to_db] at
org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
[ddl_to_db] at
org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)
[ddl_to_db] Feb 7, 2006 8:03:56 AM org.apache.commons.digester.Digester
error
[ddl_to_db] SEVERE: Parse Error at line 2 column 11: Document is
invalid: no grammar found.
[ddl_to_db] org.xml.sax.SAXParseException: Document is invalid: no
grammar found.
[ddl_to_db] at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:172)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:382)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1941)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:795)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:878)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(XMLDocumentScannerImpl.java:1157)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
[ddl_to_db] at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
[ddl_to_db] at
org.apache.commons.digester.Digester.parse(Digester.java:1631)
[ddl_to_db] at org.apache.ddlutils.io.DatabaseIO.read(DatabaseIO.java:173)
[ddl_to_db] at
org.apache.ddlutils.task.DdlToDatabaseTask.readSingleSchemaFile(DdlToDatabaseTask.java:219)
[ddl_to_db] at
org.apache.ddlutils.task.DdlToDatabaseTask.readModel(DdlToDatabaseTask.java:160)
[ddl_to_db] at
org.apache.ddlutils.task.DatabaseTaskBase.execute(DatabaseTaskBase.java:193)
[ddl_to_db] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[ddl_to_db] at org.apache.tools.ant.Task.perform(Task.java:364)
[ddl_to_db] at org.apache.tools.ant.Target.execute(Target.java:341)
[ddl_to_db] at org.apache.tools.ant.Target.performTasks(Target.java:369)
[ddl_to_db] at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
[ddl_to_db] at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
[ddl_to_db] at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
[ddl_to_db] at
org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
[ddl_to_db] at
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
[ddl_to_db] at
org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
[ddl_to_db] at
org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)
BUILD FAILED
C:\Development\trunk\build.xml:451: Could not read schema file
C:\Development\trunk\schema.xml: The database model has no name
Total time: 2 seconds
Thanks in advance for any help you can provide.
Guy
Re: DDL to Database task: no model name?
Posted by Thomas Dudziak <to...@gmail.com>.
On 2/7/06, Guy Davis <da...@guydavis.ca> wrote:
> Sorry to be a pain, but I need more clarification. I reverted my
> build.xml and now here is the top of my schema.xml file:
>
> <!DOCTYPE database PUBLIC "//APACHE/DDLUITLS/"
> "http://db.apache.org/torque/dtd/database.dtd">
> <database>
Yep, that should be fine, though you can probably simply use the
SYSTEM identifier:
<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database.dtd">
Btw, it is possible that you do not need this, but XML parsers
sometimes complain about its absence.
> Running my DdlToDatabaseTask gives me:
>
> BUILD FAILED
> C:\Development\trunk\build.xml:451: Could not read schema file
> C:\Development\trunk\schema.xml: The database model has no name
Well, DdlUtils requires you to specify the name attribute for the root
database element. Its not required in the DTD (yet), but that only
because Torque does not need it.
> Secondly, would it make sense for the writeSchemaToFile command
> to include this header automatically? I trying for roundtrip movement
> of data and schema between development databases using DDLUtils. As
> such, I need to automate all steps.
Nope, because for XML that includes it, this will lead to problems.
Tom
Re: DDL to Database task: no model name?
Posted by Guy Davis <da...@guydavis.ca>.
Thomas Dudziak wrote:
> Ah, no, you misunderstood. You should put that into the schema XML
> file, not into the build file. And you don't need to download the DTD,
> simply put the URL as-is into the DOCTYPE decl. DdlUtils will
> recognize the DTD url and use the internal DTD (which is contained in
> the jar) instead.
Sorry to be a pain, but I need more clarification. I reverted my
build.xml and now here is the top of my schema.xml file:
<!DOCTYPE database PUBLIC "//APACHE/DDLUITLS/"
"http://db.apache.org/torque/dtd/database.dtd">
<database>
Running my DdlToDatabaseTask gives me:
BUILD FAILED
C:\Development\trunk\build.xml:451: Could not read schema file
C:\Development\trunk\schema.xml: The database model has no name
Firstly, please let me know if I correctly added the DOCTYPE to this
file. Secondly, would it make sense for the writeSchemaToFile command
to include this header automatically? I trying for roundtrip movement
of data and schema between development databases using DDLUtils. As
such, I need to automate all steps.
Thanks for your help. I plan on writing up this whole process and
posting it as an example once I get everything working. I think more
examples would prove most useful to other newbies like me.
Guy
Re: DDL to Database task: no model name?
Posted by Thomas Dudziak <to...@gmail.com>.
On 2/7/06, Guy Davis <da...@guydavis.ca> wrote:
> Thanks Tom. I'm not sure if I referenced this correctly. The beginning
> of my build.xml now looks like:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE ddlutil_database SYSTEM "build/ant/database.dtd">
> <project ...
>
> The link you posted was dead, but I was able to get the file from
> http://db.apache.org/torque/dtd/. Which version should I be using? I
> tried with the database.dtd file and now get this error:
Ah, no, you misunderstood. You should put that into the schema XML
file, not into the build file. And you don't need to download the DTD,
simply put the URL as-is into the DOCTYPE decl. DdlUtils will
recognize the DTD url and use the internal DTD (which is contained in
the jar) instead.
Tom
Re: DDL to Database task: no model name?
Posted by Guy Davis <da...@guydavis.ca>.
Thomas Dudziak wrote:
> You should reference this DTD from your XML:
>
> http://db.apache.org/torque/dtd/database/database.dtd
>
> (this is the DTD that DdlUtils can resolve internally and does not
> fetch from the internet per default).
Thanks Tom. I'm not sure if I referenced this correctly. The beginning
of my build.xml now looks like:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ddlutil_database SYSTEM "build/ant/database.dtd">
<project ...
The link you posted was dead, but I was able to get the file from
http://db.apache.org/torque/dtd/. Which version should I be using? I
tried with the database.dtd file and now get this error:
BUILD FAILED
C:\Development\trunk\build.xml:444: Class
org.apache.commons.dbcp.BasicDataSource doesn't support the
"defaultidmethod" attribute.
Any thoughts?
Thanks,
Guy
Re: DDL to Database task: no model name?
Posted by Thomas Dudziak <to...@gmail.com>.
On 2/7/06, Guy Davis <da...@guydavis.ca> wrote:
> Here are some more details on the error I'm getting when trying to
> create tables from a schema XML file.
>
> Here is the schema.xml file I'm trying to load (dumped from Oracle 9i)
> using DatabaseToDdlTask.
>
> <database>
<snip>
> Here's the Ant log output...
>
> [ddl_to_db] Feb 7, 2006 8:03:56 AM org.apache.commons.digester.Digester
> error
> [ddl_to_db] SEVERE: Parse Error at line 2 column 11: Document root
> element "database", must match DOCTYPE root "null".
> [ddl_to_db] org.xml.sax.SAXParseException: Document root element
> "database", must match DOCTYPE root "null".
You should reference this DTD from your XML:
http://db.apache.org/torque/dtd/database/database.dtd
(this is the DTD that DdlUtils can resolve internally and does not
fetch from the internet per default).
Tom