2015-11-19 146 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连接器版本的错误。

干杯