我一直在使用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
要解决这个问题,我尝试过:
想弄清楚如何重新开始工作。
[编辑] 我没有找到解决为什么SchemaSpy / Graphviz停止工作(或wtf“代码139”的意思),但我确实使用了一种解决方法。
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 / ...是运行后输出的位置
答案 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