I tried reading a MSAcess database using the odbc/jdbc bridge, and got
the following errror.
Buildfile: build.xml
[dumpMetadata] java.sql.SQLException: [Microsoft][ODBC Driver Manager]
Invalid descriptor index
[dumpMetadata] at
sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
[dumpMetadata] at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
[dumpMetadata] at
sun.jdbc.odbc.JdbcOdbc.SQLColAttributes(JdbcOdbc.java:2614)
[dumpMetadata] at
sun.jdbc.odbc.JdbcOdbcResultSet.getColAttribute(JdbcOdbcResultSet.java:5445)
[dumpMetadata] at
sun.jdbc.odbc.JdbcOdbcResultSet.getColumnType(JdbcOdbcResultSet.java:6056)
[dumpMetadata] at
sun.jdbc.odbc.JdbcOdbcResultSet.getMaxCharLen(JdbcOdbcResultSet.java:5473)
[dumpMetadata] at
sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:277)
[dumpMetadata] at
sun.jdbc.odbc.JdbcOdbcResultSet.getObject(JdbcOdbcResultSet.java:1677)
[dumpMetadata] at
org.apache.ddlutils.task.DumpMetadataTask.addResultSetProperty(DumpMetadataTask.java:380)
[dumpMetadata] at
org.apache.ddlutils.task.DumpMetadataTask.addProperty(DumpMetadataTask.java:324)
[dumpMetadata] at
org.apache.ddlutils.task.DumpMetadataTask.dumpProperty(DumpMetadataTask.java:294)
[dumpMetadata] at
org.apache.ddlutils.task.DumpMetadataTask.dumpMetaData(DumpMetadataTask.java:269)
[dumpMetadata] at
org.apache.ddlutils.task.DumpMetadataTask.execute(DumpMetadataTask.java:214)
[dumpMetadata] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[dumpMetadata] at org.apache.tools.ant.Task.perform(Task.java:364)
[dumpMetadata] at org.apache.tools.ant.Target.execute(Target.java:341)
[dumpMetadata] at
org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:142)
[dumpMetadata] at
org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:91)
[dumpMetadata] at org.apache.tools.ant.Main.runBuild(Main.java:653)
[dumpMetadata] at org.apache.tools.ant.Main.startAnt(Main.java:187)
[dumpMetadata] at
org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
[dumpMetadata] at
org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
[dumpMetadata] Could not dump property getDatabaseMajorVersion because
of null
[dumpMetadata] Could not dump property getDatabaseMinorVersion because
of null
[dumpMetadata] Could not dump property getResultSetHoldability because
of null
[dumpMetadata] Could not dump property locatorsUpdateCopy because of null
[dumpMetadata] Could not dump property supportsStatementPooling because
of null
BUILD FAILED
C:\tmp\ddlutils\build.xml:66: java.sql.SQLException: [Microsoft][ODBC
Microsoft Access Driver]Optional feature not implemented
Total time: 1 second
C:\tmp\ddlutils>
I hope I got the config correct, but can't be certain. Here's the ant
file I used.
<?xml version="1.0" encoding="UTF-8"?>
<project default=""
name="DdlUtils"
basedir=".">
<!-- Allow values set at the commandline or in the environment to
override the defaults -->
<property environment="env"/>
<!-- Load the build properties -->
<property file="build.properties"/>
<path id="runtime.classpath">
<fileset dir="/dev/svn/ddlutils/lib">
<include name="**/*.jar"/>
<include name="**/*.zip"/>
</fileset>
<fileset dir="/dev/svn/ddlutils/dist">
<include name="**/*.jar"/>
</fileset>
</path>
<taskdef name="dumpMetadata"
classname="org.apache.ddlutils.task.DumpMetadataTask">
<classpath refid="runtime.classpath"/>
</taskdef>
<dumpMetadata outputfile="db-metadata.xml"
catalogpattern=""
schemapattern=""
tablepattern=""
procedurepattern=""
tabletypes="TABLE" >
<database driverclassname="sun.jdbc.odbc.JdbcOdbcDriver"
url="jdbc:odbc:MyAccessDb"
username=""
password=""/>
</dumpMetadata>
</project>
Any ideas?
Tim
Thomas Dudziak wrote:
On 1/25/06, Tim Dudgeon <[EMAIL PROTECTED]> wrote:
Thomas Dudziak wrote
but I don't think that is going to work with the ODBC/JDBC bridge).
Can you explain more?
Does this mean it doesn't have a hope of ever working, or needs a little
bit of tweaking to get it to work?
It depends largely on the quality of the ODBC/JDBC bridge as to
whether database metadata is sufficiently well supported for DdlUtils
to be able to read a database definition from a live database (ODBC
itself should give enough info). You can check for yourself by
utilizing the DumpMetadataTask, just direct it to a database and check
the resulting xml file.
Tom