2011-06-16 131 views
1

我正在使用SphinxQL MySQL客戶端存儲索引作爲「表」,但沒有真正的「數據庫」概念...一個指定端口(在我的情況下9306)sphinx mysql實例偵聽,理論上應該能夠正常溝通。JDBC MYSQL連接沒有指定數據庫?

我有以下的測試代碼:

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); 
    } 
} 

執行時,代碼只是掛起,什麼也不做,不打印出異常。我能做些什麼來解決這個問題,或者如果任何人有直接經驗,可能會發生什麼?

回答

2

此工作與1.10-beta http://www.olegsmith.com/2010/12/scalalift-sphinxql.html 並不適用於2.0.1-beta。使用mysql-connector-java 5.1.15。

+0

感謝oleg ..很抱歉我需要使用2.01測試版...任何想法爲什麼這個修補程序不適用於2.01?...你有什麼建議,看看或嘗試什麼? – algorithmicCoder 2011-06-16 18:17:58

+0

我不知道爲什麼它不起作用。可能是在sphinx中修改了mysql協議的實現。請注意,mysql控制檯工具(mysql --host localhost --port 9306)正常運行。 – olegsmetanin 2011-06-16 18:55:27

0

您的SphinxQL實例正在偵聽端口9306.您的MySQL正在偵聽某個其他端口,可能是默認的3306.您可以使用MySQL JDBC驅動程序連接到MySQL,但不能用它連接到SphinxQL。它只是不瞭解JDBC驅動程序通信協議。

+0

SphinxQL不理解JDBC驅動程序協議?任何來源? – algorithmicCoder 2011-06-16 14:22:16

+0

我想我錯了。看起來有可能通過MySQL JDBC驅動程序與SphinxQL進行交流,但是您可能需要解決一系列技術問題。 @olegsmith有一個答案,但你最好是一個好的俄羅斯讀者 - 谷歌翻譯這篇文章是非常殘酷的!另一篇文章,我發現:http://kudzia.eu/b/2011/05/mysql-connectorj-5-1-16-sphinxql-0-9-9-mysqlnontransientconnectionexception/ – Olaf 2011-06-16 16:14:28