Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在osx上使用jdbc将java连接到mysql_Java_Mysql_Jdbc_Mamp - Fatal编程技术网

在osx上使用jdbc将java连接到mysql

在osx上使用jdbc将java连接到mysql,java,mysql,jdbc,mamp,Java,Mysql,Jdbc,Mamp,因此,我将MySQL连接器/j5.1.16添加到项目的构建路径中。我在MySQL 5.1.44和Eclipse中使用默认的OSX Java包和MAMP Pro 1.9.4 我已经设置了一个简单的java应用程序,具有以下功能: private static String dbUrl = "jdbc:mysql://127.0.0.1:3306/mpp"; private static String dbUsername = "root"; private static String dbPass

因此,我将MySQL连接器/j5.1.16添加到项目的构建路径中。我在MySQL 5.1.44和Eclipse中使用默认的OSX Java包和MAMP Pro 1.9.4

我已经设置了一个简单的java应用程序,具有以下功能:

private static String dbUrl = "jdbc:mysql://127.0.0.1:3306/mpp";
private static String dbUsername = "root";
private static String dbPassword = "root";

private Statement statement = null;

private void dbConnect() {


try {
    Class.forName("com.mysql.jdbc.Driver");
    Connection connection = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
    statement = connection.createStatement();

} catch(SQLException e) {
    System.err.print(e.getMessage() + " ARGH!");
} catch(Exception e) {
    System.err.print(e.getMessage() + " FUUUUUUUUUU!");
}
}
当我运行它时,我得到以下错误:

Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. ARGH!
我在谷歌上搜索了大约一个小时,但没有成功。有没有办法解决这个问题?JDBC驱动程序应该很好,我已经测试过了

编辑

我试着通过控制台运行这个

SnowCave:src stefanschipor$ java -cp $CLASSPATH test

我得到与上面相同的输出

您确定MySQL正在3306端口上运行吗


如果mysql守护进程正在侦听端口3306
lsof-i:3306
应返回:

COMMAND  PID        USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
mysqld  7616    username   10u  IPv6 0x1fbf6940      0t0  TCP *:mysql (LISTEN)
H
5.5.969]G.Mw4??9cfUY?k!^:D&mysql_native_password

使用
nc localhost 3306
直接连接到端口应返回:

COMMAND  PID        USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
mysqld  7616    username   10u  IPv6 0x1fbf6940      0t0  TCP *:mysql (LISTEN)
H
5.5.969]G.Mw4??9cfUY?k!^:D&mysql_native_password
其中
5.5.969
是mysql版本号



您也可以尝试使用类似于测试连接URL的工具。

我在OSX上也有一个神秘的错误,在第一次出现错误时没有找到任何解决方案。在我的例子中,如果在开发过程中修改了数据库结构或删除/创建了表(MySQL作为JBoss的数据源),就会发生这种情况。在任何情况下,如果我在修改后关闭MySQL并在JBoss启动之前重新启动它,我都可以避免这个错误。

好的,这太傻了。:)

您已经打开了MAMP,进入服务器>MySQL并取消选中默认选中的“仅允许本地访问”。这很奇怪,因为我现在做的是本地的,但无论如何

我的程序似乎运行正常,@JamesA建议的命令也会产生预期的输出


胡萨

您需要使用端口localhost:8889或在MAMP>设置>端口>MySQL端口中找到的任何端口。
那么你的连接就会成功

这只是因为您的
mysql
服务没有运行。。。只需从系统首选项运行
mysql
服务,或者如果您使用
brew
run
brew services启动mysql

安装该服务,则可能是防火墙问题。dbUrl正确吗?您可以通过某个客户端控制台连接到MySQL吗?在您的情况下,defaut port localhost:3306@Farshid更新了帖子,同样的内容:)不,我的意思是连接到MySQL实例而不使用代码。是的,它可以工作。mysql exec在MAMP文件夹中,但这应该不是问题。重新启动MAMP,仍然没有运气:)我关闭了防火墙,但我启用了它,并允许使用Java。还是一样:)我在终端中运行了命令,但没有得到任何输出。但是,端口应该是好的,这里是我的MAMP配置的屏幕截图,您从lsof-i:3306的输出是什么?这意味着MySQL没有监听端口3306。检查
/Applications/MAMP/logs/mysql\u error\u log上的错误日志。err
您的错误日志看起来是正确的。剩下的唯一建议是查看您的
/var/log/appfirewall.log
中是否有任何相关内容,并尝试重新安装MAMP。这对我很有效。感谢您发布解决方案!可能是您在JDBC连接中使用了错误的端口。例如,如果您使用的是MAMP,则端口可以是8889。这正是我遇到的问题,希望能有所帮助。在MAMP PRO 3.3上,您必须选中“允许网络访问MySql”,然后选择“仅从这个Mac”。