2013-05-01 73 views
0

我做了兩個類,一個SQL閱讀器和一個SQL編譯器。出於測試的目的,我讀入並執行了一系列與derby相關的腳本,derbytutor文件夾。我無法弄清楚爲什麼不超過三個腳本實際執行沒有發生特定的錯誤。這個錯誤是A network protocol error was encountered and the connection has been terminated: A PROTOCOL Data Stream Syntax Error was detected. Reason: 0x9,236. Plaintext connection attempt to an SSL enabled server?我正在運行Java應用程序作爲客戶端/服務器體系結構的客戶端。如果這可能是一個因素,腳本也很安靜嗎?Java執行sql腳本異常?德比網絡服務器

腳本的順序如下:

1 - 使架構(細運行沒有錯誤)

2 - 插入SCRIPT1 - 運行正常

2 - 插入SCRIPT2 - 運行良好

3 - 第三腳本返回error.Its不與語法否則會使的是表觀

這裏是主要方法whic小時,然後經過腳本轉換和執行

scriptRead scriptBuffer = new scriptRead(); 
     scriptCompiler exec = new scriptCompiler(); 

     try { 
     final long start = System.currentTimeMillis(); 
     //Load Scripts 
     String[] schema = scriptBuffer.getScript("schema.sql"); 
     String[] t1 = scriptBuffer.getScript("t1.sql"); 
     String[] t2 = scriptBuffer.getScript("t2.sql"); 
     String[] t3 = scriptBuffer.getScript("t3.sql"); 

     scriptCompiler sc = new scriptCompiler(); 
     //Run scripts 
     sc.execute(schema); 
     sc.execute(t1); 
     sc.execute(t2); 
     sc.execute(t3);// Problem statement 

     final long end = System.currentTimeMillis(); 
     long fin = end - start; 
     System.out.println("Took a time... : " + fin); 

    }catch(Throwable exc){ 
     System.err.print(exc.getMessage()+"\n"); 
    } 

這裏是執行腳本代碼運行..

public void makeConn() throws SQLException, ClassNotFoundException{ 
    Class.forName(driver); 
    conn = DriverManager.getConnection(url); 
    } 

    @SuppressWarnings("CallToThreadDumpStack") 
    public void execute(String[] query){ 

    try{ 
      makeConn(); 
      try{ 
      stmt = conn.createStatement(); 
      for(int x = 0; x < query.length;x++){ 
       stmt.execute(query[x]);  
      } 
      stmt.close(); 
      closeConn(); 
     }catch(SQLException err){ 
      //err.printStackTrace(); 
      System.err.println(err.getMessage()); 
     } 
    }catch(Throwable e){ 
     if(e instanceof SQLException){ 
      if(((SQLException)e).equals("08001")){ 
       System.err.println("Incorrect Username or Password"); 
      }else{ 
       System.err.println("Check Server is running"); 
      } 
     }else{ 
      System.err.println("Could not find class path"); 
     } 
    } 

} 

我真的不知道在哪裏的問題所在?如果它是SQL Syntax足夠公平,但爲什麼其他腳本正在執行。

回答

0

三大理念,開始您的診斷:

  1. 徹底檢查客戶端異常:http://wiki.apache.org/db-derby/UnwindExceptionChain
  2. 檢查您爲您的Derby服務器的derby.log。有時候,錯誤僅在那裏被報告,並且沒有被正確地傳達給客戶。
  3. 它是否總是t3.sql失敗?仔細檢查該文件。特別注意奇怪的字符,引號,標點符號等。這些東西會拋出低級解析。
+0

那麼唯一的區別是第三個插入腳本包含更多的類型。因此,第一個腳本類似於「插入國家值('阿富汗','AF','亞洲');'和失敗的腳本'插入到FLIGHTAVAILABILITY值('AA1211',1,'2004-03-31 」,2,2,2);'。此外,該網站正在維護中,因此無法看到它 – user2329170 2013-05-02 00:57:35