Graphviz错误现在打破了schemaspy db生成

Sha*_*unk 12 graphviz schemaspy

我一直在使用Schemaspy(v5.0)在我的Mac(El Capitan)上通过Homebrew使用Graphviz来绘制mySQL(v5.7.11).最近对Graphviz(v2.40.1)的更新显然破坏了Schemaspy生成关系图的能力.

Writing/graphing summary.....org.schemaspy.util.Dot$DotFailure: 'dot -Tpng:gd 
/Tools/docs/data/project/diagrams/summary/relationships.real.compact.dot 
-o/Tools/docs/data/project/diagrams/summary/relationships.real.compact.png 
-Tcmapx' 
failed with return code 139
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我尝试过:

  • 卸载/重新安装graphviz
  • 降级Graphviz(v2.38 - 它是我能找到的唯一版本,自制软件也没有任何旧版本)但是我把它安装了
  • 试图在同事的计算机上运行,​​结果相同
  • 尝试了新的beta版schemaspy(v6.0-beta3)
  • 搜索graphviz论坛(页面崩溃),stackoverflow和一般谷歌搜索.

想弄清楚如何重新开始工作.


[编辑]我没有找到解决为什么SchemaSpy/Graphviz停止工作(或wtf"代码139"的意思),但我确实使用了一种解决方法.

  • 安装Docker
  • 从hub.docker.com获取mnuessler/schemaspy或类似内容
  • 打开一个卷给你的主机 - 它将在docker命令中使用
  • 运行以下命令

docker run -it --rm -v /docs/data:/data mnuessler/schemaspy -hq -t mysql -host localhost -u root -p root -db things -o /data/leads

其中-v是您在主机上打开的卷,-o/data/...是运行后输出显示的位置

raf*_*asa 10

默认情况下,SchemaSpy期望点可执行文件位于PATH环境变量中.使用此选项可明确指定Graphviz的安装位置.

如果您不想将其添加到PATH,可以使用-gv参数并提供安装Graphviz的路径.

更新:以下评论,也来自@rafalkasa,有最好的解决方案.通过arg

-renderer:石英

适用于Mac OS El Capitan,带有graphviz版本2.40.1(20161225.0304)

  • 它将使用-renderer:使用graphviz版本2.40.1(20161225.0304)在Mac OS El Capitan上测试石英 (6认同)

Dón*_*nal 6

SchemaSpy 6.1.0 版本已经删除了对 GraphViz 的依赖,因此使用该版本可以避免此问题。


版本 6.1.0 包含 GraphViz 的 JavaScript 实现,可以使用它来代替在 PATH 上查找 GraphViz。

我不确定默认情况下是否使用 JavaScript 版本,但您可以通过提供参数来强制此行为-vizjs,例如

java -jar ./schemaspy-6.1.0-SNAPSHOT.jar -vizjs -t pgsql -o output 
    -host localhost -port 5432 -s public -db my_db -u root -p password 
    -dp jdbc/postgresql-42.2.6.jar
Run Code Online (Sandbox Code Playgroud)

JavaScript 实现依赖于 Nashorn JavaScript 引擎,该引擎在版本 15 中已从 JDK 中删除,因此您必须使用 JDK <= 14。