Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get AbstractMethodError when connect to SQL Server by using mssql17-jtds driver. #1458

Closed
tsaiian opened this issue May 15, 2024 · 2 comments

Comments

@tsaiian
Copy link

tsaiian commented May 15, 2024

Expected Behavior

output diagrams.

Current Behavior

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: java.lang.AbstractMethodError
        at net.sourceforge.jtds.jdbc.JtdsConnection.getSchema(JtdsConnection.java:2881)
        at org.schemaspy.input.dbms.SchemaResolver.resolveSchema(SchemaResolver.java:44)
        at org.schemaspy.SchemaAnalyzer.analyze(SchemaAnalyzer.java:252)
        at org.schemaspy.SchemaAnalyzer.analyze(SchemaAnalyzer.java:135)
        at org.schemaspy.cli.SchemaSpyRunner.runAnalyzer(SchemaSpyRunner.java:109)
        at org.schemaspy.cli.SchemaSpyRunner.run(SchemaSpyRunner.java:98)
        at org.schemaspy.Main.main(Main.java:55)
        ... 8 more

Possible Solution

TBD

Steps to Reproduce (for bugs)

$ docker run --rm schemaspy/schemaspy:latest -t mssql17-jtds  -db <my_db> -host localhost  -port 1433  -u sa -p <my_password>
Using drivers:jtds-1.3.1.jar, mariadb-java-client-1.1.10.jar
mysql-connector-java-8.0.28.jar, postgresql-42.3.8.jar
  ____       _                          ____
 / ___|  ___| |__   ___ _ __ ___   __ _/ ___| _ __  _   _
 \___ \ / __| '_ \ / _ \ '_ ` _ \ / _` \___ \| '_ \| | | |
  ___) | (__| | | |  __/ | | | | | (_| |___) | |_) | |_| |
 |____/ \___|_| |_|\___|_| |_| |_|\__,_|____/| .__/ \__, |
                                             |_|    |___/

                                              6.2.4

SchemaSpy generates an HTML representation of a database schema's relationships.
SchemaSpy comes with ABSOLUTELY NO WARRANTY.
SchemaSpy is free software and can be redistributed under the conditions of LGPL version 3 or later.
http://www.gnu.org/licenses/

INFO  - Starting Main v6.2.4 on fd35ab0331e5 with PID 1 (/usr/local/lib/schemaspy/schemaspy-6.2.4-app.jar started by java in /)
INFO  - The following profiles are active: default
INFO  - Started Main in 1.266 seconds (JVM running for 1.826)
INFO  - Starting schema analysis
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: java.lang.AbstractMethodError
        at net.sourceforge.jtds.jdbc.JtdsConnection.getSchema(JtdsConnection.java:2881)
        at org.schemaspy.input.dbms.SchemaResolver.resolveSchema(SchemaResolver.java:44)
        at org.schemaspy.SchemaAnalyzer.analyze(SchemaAnalyzer.java:252)
        at org.schemaspy.SchemaAnalyzer.analyze(SchemaAnalyzer.java:135)
        at org.schemaspy.cli.SchemaSpyRunner.runAnalyzer(SchemaSpyRunner.java:109)
        at org.schemaspy.cli.SchemaSpyRunner.run(SchemaSpyRunner.java:98)
        at org.schemaspy.Main.main(Main.java:55)
        ... 8 more

Context

  • Database type (e.g. MySQL): Microsoft SQL Server
  • Database driver version (is you use a special one): mssql17-jtds

Your Environment

  • Version used: schemaspy/schemaspy:6.2.4 docker image
@npetzall
Copy link
Member

Add -s followed by the schema name you want to process.

TLDR;
We have some code to check which schema the connection has been done towards if -s hasn't been supplied and the check is done thru jdbc api, in this particular case it seems that the jdts driver hasn't implemented the jdbc api fully.

@tsaiian
Copy link
Author

tsaiian commented May 16, 2024

Thanks, it worked.

my final command:

docker run \
  -v "$PWD/output:/output" \
  --rm \
  schemaspy/schemaspy:6.2.4 \
  -t mssql17-jtds \
  -db $DB_NAME \
  -host localhost  \
  -port 1433 \
  -u <USER> \
  -p <PASS> \
  -s dbo

@tsaiian tsaiian closed this as completed May 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants