【问题标题】:Why do I get error using Ant to create mysql database?为什么我使用 Ant 创建 mysql 数据库时出错?
【发布时间】:2012-07-20 05:55:43
【问题描述】:

机器和背景: OSX 10.5.8 32 位。 MySQL 密码为 "" 即为空

目标:我正在尝试使用 Java 数据库连接器 (JDBC) 教程。我目前在this step

错误: 在我拥有 JDBC 教程的目录中使用 shell,我输入 sudo ant create-mysql-database 并收到以下错误:

构建文件:/Users/adam/Desktop/JDBCTutorial/build.xml

创建-mysql-数据库:

构建失败/Users/adam/Desktop/JDBCTutorial/build.xml:73: java.sql.SQLException:用户'root'@'localhost'的访问被拒绝 (使用密码:YES)在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919) 在 com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694) 在 com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244) 在 com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397) 在 com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430) 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215) 在 com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:813) 在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334) 在 org.apache.tools.ant.taskdefs.JDBCTask.getConnection(JDBCTask.java:370) 在 org.apache.tools.ant.taskdefs.SQLExec.getConnection(SQLExec.java:942) 在 org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:614) 在 org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 在 sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:592) 在 org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 在 org.apache.tools.ant.Task.perform(Task.java:348) 在 org.apache.tools.ant.Target.execute(Target.java:390) 在 org.apache.tools.ant.Target.performTasks(Target.java:411) 在 org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) 在 org.apache.tools.ant.Project.executeTarget(Project.java:1368) 在 org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 在 org.apache.tools.ant.Project.executeTargets(Project.java:1251) 在 org.apache.tools.ant.Main.runBuild(Main.java:809) 在 org.apache.tools.ant.Main.startAnt(Main.java:217) 在 org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 在 org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

自我纠正努力:我尝试在每个this 的命令末尾添加grant all on initdb.* to 'root'@'127.0.0.1' identified by ''。同样的错误。它似乎拒绝访问 ant 做事;也许如果我将使用密码选项关闭为否,它会起作用;我试着用谷歌搜索,但没有运气

【问题讨论】:

    标签: mysql jdbc ant installation


    【解决方案1】:

    在 JDBC 教程文件夹的 build.xml 文件中,搜索字符串“create-mysql-database”;该字符串标记 .xml 文件中定义的任务。确定该文本块中“密码”参数的值(使用 Dashcode 等突出显示程序阅读文本时更容易),并将其更改为适用于系统数据库的内容(在我的情况下"")。

    在编辑之前找到“密码”中的字符串后,在整个 .xml 文件中找到相同的字符串并将其替换为正确的密码

    Lesson:显然 ant 会获取你在调用它时传入的字符串(即字符串“ant”之后的字符串),并在 build.xml中查找它> 出现在您调用程序的目录中。不要输入错误的密码...

    【讨论】:

      【解决方案2】:

      我在 JDBC 教程中也遇到了同样的错误,根据 whearyou 的建议,我刚刚在属性中添加了我的原始密码“YES”(我在设置 MySQL 时创建的)/ mysql-build-properties.xml 在第 28 行。

      然后它起作用了......!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-29
        • 1970-01-01
        • 2017-05-26
        • 2018-04-23
        • 2016-05-28
        • 1970-01-01
        • 2011-11-11
        • 2021-07-24
        相关资源
        最近更新 更多