0

我的 SQLite 数据库有一个使用 spelfix1.dll 扩展创建的虚拟表。

有没有办法在 schemacrawler 中加载这个扩展?

当我尝试创建图形时

schemacrawler --server=sqlite --database=/home/schcrwlr/share/database.db --info-level=minimum --command=list --output-file=/home/schcrwlr/share/output.png

启动容器后

C:\Users\user>  docker run `
-v ${PWD}:/home/schcrwlr/share `
--name schemacrawler `
--rm -i -t `
--entrypoint=/bin/bash `
schemacrawler/schemacrawler:v16.16.6

Schemacrawler 执行停止,因为根据日志文件缺少扩展

Caused by: schemacrawler.schemacrawler.exceptions.WrappedSQLException: Could not retrieve table columns for table <lang_store>: [SQLITE_ERROR] SQL error or missing database (no such module: spellfix1)

Caused by: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (no such module: spellfix1)

我在 Win10 上的 Windows PowerShell 中工作。

Environment:
  SchemaCrawler 16.16.6
  Linux 5.10.16.3-microsoft-standard-WSL2
  Oracle Corporation OpenJDK 64-Bit Server VM 17-ea+14
  SQLite 3.36.0
  SQLite JDBC 3.36.0.3
4

1 回答 1

1

这更多是关于 SQLite JDBC 驱动程序的问题,而不是关于 SchemaCrawler 的问题。SchemaCrawler Docker 映像与 SQLite JDBC 驱动程序捆绑在一起,出于安全原因,不允许读取外部扩展库。如果您真的想这样做,您将不得不使用 SchemaCrawler 的常规分发并在 lib 文件夹中提供扩展 DLL 文件。或者,您可以基于 SchemaCrawler Docker 映像,使用此扩展构建您自己的 Docker 映像。所有这些似乎工作量太大了。

您最好的选择是剥离虚拟表的模式并再次运行 SchemaCrawler。请在使用 spellfix1 表反映 sqlite 数据库的答案中查看执行此操作的过程

Sualeh Fatehi,SchemaCrawler

于 2022-01-12T00:51:28.720 回答