12

我一直在使用 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 - 这是我能找到的唯一版本,而且自制软件也没有任何旧版本),但它破坏了我的安装
  • 试图在同事的计算机上运行,​​结果相同
  • 尝试了新的 Beta 版 schemaspy(v6.0-beta3)
  • 搜索了 graphviz 论坛(页面崩溃)、stackoverflow 和一般的谷歌搜索。

想弄清楚如何让它再次工作。


[编辑] 我没有找到解决 SchemaSpy/Graphviz 停止工作的原因(或 wtf “code 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/... 是运行后将显示输出的位置

4

7 回答 7

10

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

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

更新

  • 如果您在早于 High Sierra 的 OS X 版本上使用 GraphViz 版本 2.40.1,请添加-renderer :quartz到命令行。
  • 如果您在 OS X 版本 High Sierra 或更高版本上使用 GraphViz 版本 2.40.1,请添加-renderer :cairo到命令行。
于 2017-02-03T07:04:35.173 回答
4

为此在 High Sierra 上工作修复:

brew uninstall graphviz

之后运行:

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

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

于 2018-02-17T12:52:33.550 回答
1

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

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

于 2018-06-14T12:14:36.763 回答
1

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

在 mojave 上运行,我无法让brew安装工作(由于缺少 pango 库)。也许将来会更新,但在撰写本文时,我不得不切换到 Macports 安装,这对我有用。

还运行 schemaspy 6.0.0 和 Graphviz 2.40.1。

于 2019-02-26T20:01:56.877 回答
1

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
于 2019-09-10T14:25:22.783 回答
1

现在(截至 2021 年)使用 brew 安装 graphviz 会默认安装 librsvg 和 pango。无需传递--with-*选项:正如其他人所评论的那样,它们也不再有效。

根据接受的答案和项目常见问题解答,只需运行brew install graphviz并确保您使用正确的渲染器选项。

Mac 版本:Catalina 10.15.7

完整的依赖列表:

==> Installing dependencies for graphviz: libpng, freetype, fontconfig, jpeg, libtiff, giflib, webp, gd, gettext, libffi, pcre, gdbm, mpdecimal, ca-certificates, openssl@1.1, readline, sqlite, xz, python@3.9, glib, jasper, netpbm, gts, pkg-config, libpthread-stubs, xorgproto, libxau, libxdmcp, libxcb, libx11, libxext, libxrender, lzo, pixman, cairo, gdk-pixbuf, fribidi, gobject-introspection, graphite2, icu4c, harfbuzz, pango, librsvg, m4 and libtool
于 2022-01-11T20:34:14.843 回答
0

更新这个问题。Homebrew 最近在安装软件包时对添加选项进行了更改......他们不再允许它了。:)

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

建议是在那里使用brew edit graphviz并添加所需的参数。我现在正在尝试。

于 2019-06-18T13:30:08.147 回答