macos – 尝试使用OSX使用schemacrawler连接到sqlite db – 为什
见底部得出结论:
我正在尝试使用schemacrawler来绘制sqlite数据库.我的设置: > OSX 10.8 我在安装schemacrawler的目录中,并使用以下命令行: stebro$java -classpath lib/*:. schemacrawler.tools.sqlite.Main /Library/Application Support/MyApp/Data/MyApp.db -command="select count(*) from myTable" -infolevel=maximum SchemaCrawler 10.5 Copyright (c) 2000-2013,Sualeh Fatehi. SchemaCrawler is a database schema discovery and comprehension tool. You can search for database schema objects using regular expressions,and output the schema and data in a readable text format. You can find potential schema design issues with lint. The output serves for database documentation is designed to be diff-ed against other database schemas. SchemaCrawler also generates schema diagrams. password: java.sql.SQLException: Could not connect to database,for user null at schemacrawler.schemacrawler.BaseDatabaseConnectionOptions.getConnection(BaseDatabaseConnectionOptions.java:93) at schemacrawler.schemacrawler.BaseDatabaseConnectionOptions.getConnection(BaseDatabaseConnectionOptions.java:70) at schemacrawler.tools.commandline.SchemaCrawlerCommandLine.execute(SchemaCrawlerCommandLine.java:173) at schemacrawler.tools.commandline.SchemaCrawlerMain.main(SchemaCrawlerMain.java:93) at schemacrawler.tools.commandline.SchemaCrawlerMain.main(SchemaCrawlerMain.java:52) at schemacrawler.tools.sqlite.Main.main(Main.java:43) Caused by: java.lang.IllegalArgumentException: Insufficient parameters for database connection URL: missing [database] at schemacrawler.schemacrawler.DatabaseConfigConnectionOptions.getConnectionUrl(DatabaseConfigConnectionOptions.java:73) at schemacrawler.schemacrawler.BaseDatabaseConnectionOptions.getConnection(BaseDatabaseConnectionOptions.java:89) ... 5 more 如果我指定-password,我会得到相同的错误,并为-user指定各种值也是一样的. Sqlite不需要用户/密码 – 为什么jdbc或schemacrawler会问我一个? 附录: 这是一系列特定的命令,它们创建一个简单的数据库,然后尝试使用schemacrawler绘制它: bash-3.2$sqlite3 MyApp.db sqlite3 MyApp.db SQLite version 3.7.12 2012-04-03 19:43:07 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> create table smbtest(col1 integer,col2 integer); create table smbtest(col1 integer,col2 integer); sqlite> ^D bash-3.2$~/bin/sunjava -classpath lib/*:. schemacrawler.tools.sqlite.Main -database=MyApp.db -infolevel=maximum -command=graph -outputformat=pdf -outputfile=myapp.pdf SchemaCrawler 10.5 Copyright (c) 2000-2013,and output the schema and data in a readable text format. You can find potential schema design issues with lint. The output serves for database documentation is designed to be diff-ed against other database schemas. SchemaCrawler also generates schema diagrams. password: Graphviz was not available to create the requested graph. Please reinstall Graphviz,and make it available on the system PATH. Meanwhile,a .dot text file has been created instead. This .dot file can be opened in any Graphviz file viewer. java.io.IOException: Cannot run program "dot": error=2,No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041) at schemacrawler.tools.integration.graph.ProcessExecutor.execute(ProcessExecutor.java:124) at schemacrawler.tools.integration.graph.GraphGenerator.generateDiagram(GraphGenerator.java:87) at schemacrawler.tools.integration.graph.GraphExecutable.executeOn(GraphExecutable.java:123) at schemacrawler.tools.executable.SchemaCrawlerExecutable.executeOn(SchemaCrawlerExecutable.java:87) at schemacrawler.tools.executable.BaseExecutable.execute(BaseExecutable.java:77) at schemacrawler.tools.commandline.SchemaCrawlerCommandLine.execute(SchemaCrawlerCommandLine.java:176) at schemacrawler.tools.commandline.SchemaCrawlerMain.main(SchemaCrawlerMain.java:93) at schemacrawler.tools.commandline.SchemaCrawlerMain.main(SchemaCrawlerMain.java:52) at schemacrawler.tools.sqlite.Main.main(Main.java:43) Caused by: java.io.IOException: error=2,No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:135) at java.lang.ProcessImpl.start(ProcessImpl.java:130) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022) ... 9 more 定论: 但是,应用程序确实继续询问我的密码,但只需按Enter即可继续成功. 解决方法史蒂夫,您需要像这样指定数据库: "-database=/Library/Application Support/MyApp/Data/MyApp.db" 请注意双引号以允许数据库文件的路径中的空间和-database命令行开关.我也删除了反斜杠,因为整个开关用双引号括起来. 有关命令行的帮助,只需运行: java -classpath lib/*:. schemacrawler.tools.sqlite.Main Sualeh Fatehi,SchemaCrawler (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |