Graphviz错误现在打破了schemaspy db generation

时间:2017-01-24 19:36:20

标签: 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

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

  • 卸载/重新安装graphviz
  • 降级Graphviz(v2.38 - 这是我能找到的唯一版本,而自制软件也没有任何旧版本),但是我已经安装了我的安装
  • 试图在同事的计算机上运行,​​结果相同
  • 尝试了新版本的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 / ...是运行后输出的位置

6 个答案:

答案 0 :(得分:9)

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

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

更新:以下评论,也来自@rafalkasa,有最好的解决方法。传递arg

-renderer:quartz

可在Mac OS El Capitan上使用graphviz版本2.40.1(20161225.0304)

答案 1 :(得分:4)

为High Sierra工作解决这个问题:

brew uninstall graphviz

在那之后:

brew install graphviz --with-librsvg --with-pango

来源:https://github.com/schemaspy/schemaspy/issues/33/#issuecomment-355091538

答案 2 :(得分:1)

如果您使用的是MacO HighSierra,则正确的调用是没有渲染器并且(重新)安装Graphviz:

brew reinstall graphviz --with-librsvg --with-pango

答案 3 :(得分:1)

我尝试了上述方法,但是对我来说不起作用。

在mojave上运行,由于缺少pango库,我无法安装brew。也许将来会对此进行更新,但是在撰写本文时,我不得不切换到Macports安装,并且对我有用。

还要运行schemaspy 6.0.0和Graphviz 2.40.1。

答案 4 :(得分:0)

此问题的更新。 Homebrew最近更改了安装软件包时的选项添加...。它们不再允许这样做。 :)

https://brew.sh/2019/02/02/homebrew-2.0.0/

建议使用brew edit graphviz并在其中添加所需的参数。我正在尝试。

答案 5 :(得分:0)

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


版本6.1.0尚未发布,但是您可以download a snapshot。此版本包含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