没有指定数据库的JDBC MYSQL连接?

Posted

技术标签:

【中文标题】没有指定数据库的JDBC MYSQL连接?【英文标题】:JDBC MYSQL Connection without specifying database? 【发布时间】:2011-09-16 07:56:27 【问题描述】:

我正在使用 SphinxQL mysql 客户端,它将索引存储为“表”,但没有真正的“数据库”概念...一个指定 sphinx mysql 实例侦听的端口(在我的例子中为 9306),理论上应该可以正常交流了。

我有以下测试代码:

import java.sql.*;

public class Dbtest 
    public static void main (String[] args) 

    try 
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:9306",
                         "user","password");
        con.setReadOnly(true);
        Statement stmt = con.createStatement();    
        ResultSet res = stmt.executeQuery("SELECT * from index_turned_table");

        while (res.next()) 
            String stuff1 = res.getString(1);
            String stuff2 = res.getString(2);
            System.out.println("Adding " + stuff1);
            System.out.println("Adding " + stuff2);    
        

        res.close();
        stmt.close();
        con.close();
    
    catch(Exception e)
    
        System.out.println (e);
    

在执行时,代码只是挂起,什么也不做,也不会打印出异常。我可以做些什么有用的事情来解决这个问题,或者如果有人有直接的经验,可能会发生什么?

【问题讨论】:

【参考方案1】:

这项工作与 1.10-beta http://www.olegsmith.com/2010/12/scalalift-sphinxql.html 并且不适用于 2.0.1-beta。使用 mysql-connector-java 5.1.15。

【讨论】:

谢谢 oleg..不幸的是我需要使用 2.01 beta...知道为什么此修复程序不适用于 2.01 吗?...您对在哪里查看或尝试什么有任何建议? 我不知道为什么它不起作用。可能在 sphinx 中修改了 mysql 协议的实现。注意mysql控制台工具(mysql --host localhost --port 9306)工作正常。【参考方案2】:

您的 SphinxQL 实例正在侦听端口 9306。您的 MySQL 正在侦听其他端口,可能是默认的 3306。您可以使用 MySQL JDBC 驱动程序连接到 MySQL,但不能使用它连接到 SphinxQL。它只是不了解 JDBC 驱动程序通信协议。

【讨论】:

SphinxQL 不理解 JDBC 驱动协议?有什么来源吗? 我想我错了。看起来有可能通过 MySQL JDBC 驱动程序与 SphinxQL 对话,但您可能必须解决一堆技术问题。 @olegsmith 有一个答案,但你最好是一个好的俄语读者——谷歌对那篇文章的翻译太糟糕了!我发现的另一个帖子:kudzia.eu/b/2011/05/…

以上是关于没有指定数据库的JDBC MYSQL连接?的主要内容,如果未能解决你的问题,请参考以下文章

没有指定数据库的JDBC MYSQL连接?

JDBC

Java JDBC连接mysql数据库

Mysql无法远程连接解决方案

JDBC的连接mySql的基本知识

在jdbc中,负责建立与指定数据库连接的方法是