2015-11-19 150 views
1

我們最近將我們的數據移至新服務器 - 但是新的使用MariaDB。Google Apps腳本查詢MariaDB

我們在Google Apps腳本中爲電子表格做了大量查詢和計算。由於服務器切換我們的腳本返回以下錯誤:

Unknown system variable 'OPTION' (line 21, file "")

線21指的是下面的腳本內的查詢:

function mysql_invoice() { 

// Replace the variables in this block with real values. 
var address = 'xxx'; 
var user = 'xxx'; 
var userPwd = 'xxx'; 
var db = 'xxx'; 

var dbUrl = 'jdbc:mysql://' + address + '/' + db; 

// Read up to 100000 rows of data from the table and log them. 

    var conn = Jdbc.getConnection(dbUrl, user, userPwd); 
     var stmt = conn.createStatement(); 


    // Call SO DATA 
     stmt.setMaxRows(10000); 
     var start = new Date(); 

     var rs = stmt.executeQuery("select * from sales_flat_invoice"); 

任何想法?

+0

沒有足夠的信息來重現問題。 [mcve]會有幫助。 – Mogsdad

+0

要重現此問題,您必須創建一個試圖訪問運行MariaDB的遠程數據庫服務器的Google腳本,並且應該使用JDBC:mysql驅動程序訪問並在其上運行查詢。我所看到的所有信息都在問題中提供。你還需要什麼?你能更具體一點嗎? – CntkCtn

+0

如果您將MariaDB 10與較早版本的jdbc驅動程序一起使用,那麼它很可能會爲您提供這些類型的錯誤。 MySql 5.5與Maria DB 5.5進行比較,MySql 5.6與MariaDB 10進行比較。MySql 5.5與5.6之間的差異是對OPTION的支持。 5.6不再支持。 因此,如果您使用的是MariaDB 10,則不支持系統變量OPTION,它正在jdbc Driver中用於最有可能準備和運行查詢的驅動程序。 我強烈的猜測是,如果可以使用谷歌腳本,則需要使用jdbc的更新版本。 – CntkCtn

回答

0

我相信你使用setMaxRows的方式是問題所在。

如果您更改設置限制的方式,它將起作用。

// Call SO DATA 
    //  stmt.setMaxRows(10000); 
    var start = new Date(); 

    var rs = stmt.executeQuery("select * from sales_flat_invoice limit 10000"); 

這應該解決您的問題。這個定義來自你的MariaDB版本和jdbc連接器版本的錯誤。

乾杯