Search code examples
graphvizschemaspy

Graphviz error now breaking schemaspy db generation


I have been using Schemaspy(v5.0) to diagram mySQL(v5.7.11) using Graphviz via Homebrew on my Mac (El Capitan). A recent update to Graphviz(v2.40.1) apparently has broken Schemaspy's ability to generate the relational diagrams.

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

To solve this issue, I have tried:

  • uninstall/reinstall graphviz
  • downgrade Graphviz(v2.38 - it was the only version I could find and homebrew didn't have any older versions either) but it hosed my install
  • attempted to run on a colleague's computer with same results
  • tried the new beta version of schemaspy(v6.0-beta3)
  • searched graphviz forums (page crashed), stackoverflow, and general google search.

Looking to figure out how to get this working again.


[Edit] I didn't find a solution to why SchemaSpy/Graphviz stopped working (or wtf "code 139" meant), but I did use a workaround.

  • Install Docker
  • Get mnuessler/schemaspy or similar from hub.docker.com
  • open a volume to your host - it will be used in the docker command
  • run the command below

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

where -v is the volume you opened on your host and -o /data/... is where the output will show up after the run


Solution

  • By default SchemaSpy expects the dot executable to be in the PATH environment variable. Use this option to explicitly specify where Graphviz is installed.

    If you don't want to add it to your PATH, you can use -gv parameter and provide path to where Graphviz is installed.

    Update

    • If you're using GraphViz version 2.40.1 on OS X version older than High Sierra, add -renderer :quartz to the commandline.
    • If you're using GraphViz version 2.40.1 on OS X version High Sierra or newer, add -renderer :cairo to the commandline.