Mediawiki Can';不能从java连接到MySQL数据库,但可以从普通的MySQL命令行连接

Mediawiki Can';不能从java连接到MySQL数据库,但可以从普通的MySQL命令行连接,mediawiki,mamp-pro,wiktionary,Mediawiki,Mamp Pro,Wiktionary,我正在尝试使用mwdumperjar将wiktionary转储导入我用MAMP-Pro创建的数据库。下面是我正在努力解决的命令: java -jar mwdumper-1.25.jar --format=sql:1.5 /Users/med/Downloads/enwiktionary-20171001-pages-articles-multistream.xml --output=mysql://localhost:8889/wiktionay?user=wikiuser&passwo

我正在尝试使用mwdumperjar将wiktionary转储导入我用MAMP-Pro创建的数据库。下面是我正在努力解决的命令:

java -jar mwdumper-1.25.jar --format=sql:1.5 /Users/med/Downloads/enwiktionary-20171001-pages-articles-multistream.xml --output=mysql://localhost:8889/wiktionay?user=wikiuser&password=wiki2017
使用此命令运行jar会产生以下结果:

> [1] 1209
$ Exception in thread "main" java.io.IOException: Access denied for user 'wikiuser'@'localhost' (using password: NO)
        at org.mediawiki.dumper.Dumper.connectMySql(Dumper.java:225)
        at org.mediawiki.dumper.Dumper.openOutputFile(Dumper.java:211)
        at org.mediawiki.dumper.Dumper.main(Dumper.java:96)
Caused by: java.sql.SQLException: Access denied for user 'wikiuser'@'localhost' (using password: NO)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
        at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:270)
        at org.mediawiki.dumper.Dumper.connectMySql(Dumper.java:221)
        ... 2 more
正如在相关问题中提到的,我在MAMP接口中选中了“允许网络访问MySQL”,但仍然没有帮助。使用root也会出现同样的问题


知道怎么回事吗?

问题是,由于&操作员在终端上发送URL时,URL中的密码作为单独的命令获取。因此,mysql永远不会获得密码

使用\退出&,即

--output=mysql://localhost:8889/wiktionay?user=wikiuser\&password=wiki2017
编辑时间:凌晨4:14,IST

线程“main”java.lang.IllegalArgumentException中的异常: 需要文件流,是否已获得SQL连接


尝试在末尾传递流文件名,即在--output之后,接着是--format,然后是
/Users/med/Downloads/enwiktionary-20171001-pages-articles-multistream.xml

问题在于,URL中的&运算符密码在发送时作为单独的命令获取终端上的URL。因此,mysql永远不会获得密码

使用\退出&,即

--output=mysql://localhost:8889/wiktionay?user=wikiuser\&password=wiki2017
编辑时间:凌晨4:14,IST

线程“main”java.lang.IllegalArgumentException中的异常: 需要文件流,是否已获得SQL连接


尝试在末尾传递流文件名,即在--output之后传递--format,然后传递
/Users/med/Downloads/enwiktionary-20171001-pages-articles-multistream.xml

Thx!它解决了这个问题。现在我得到了另一个异常:
线程“main”java.lang.IllegalArgumentException中的异常:预期的文件流,获得了SQL连接?
有趣的事情:要调试同一个命令,转义&导致错误,而不转义就像一个符咒。有什么解释吗?谢谢!它解决了这个问题。现在我得到了另一个异常:
线程“main”java.lang.IllegalArgumentException中的异常:预期的文件流,获得了SQL连接?
有趣的事情:要调试同一个命令,转义&导致错误,而不转义就像一个符咒。有什么解释吗?