表上的JDBC getObject返回错误:“禁止访问类(类)”

时间:2013-02-15 07:38:01

标签: jdbc google-apps-script google-cloud-sql

我试图在我的“mysql”数据库的表“user”中获取所有用户列时,我得到一个奇怪的回应。

我正在使用Google Cloud SQL,使用JDBC类从Google Apps脚本访问它。这是我的代码:

function displayingOneUser(){

  var connection = Jdbc.getCloudSqlConnection("jdbc:google:rdbms://blablabla/mysql", "root", rootPwd);

  var mySqlStatement = connection.createStatement();

  var resultSet = mySqlStatement.executeQuery("select * from user");

  if(resultSet.next()){
    var str="";
    for(var i=1; i<43; i++){
      str=str.concat(resultSet.getObject(i)+" | ");
      Logger.log("str so far : "+str);
    }
    Logger.log("Displaying first user : "+str+".");
  }

  mySqlStatement.close();
  connection.close();


}

我收到以下错误:“禁止访问类”(类)“。当它到达第33或34列时(我不记得哪一个)。 如果我使用getString(),那么它没有问题。

知道可能来自哪里?

干杯,

维克多

1 个答案:

答案 0 :(得分:0)

我能够重现这个问题,我相信这确实是一个错误。这与默认blob数据库

user表中的mysql列有关

enter image description here

尝试阅读getObject()个中断的任何列。 getString()有效。

很好找,请在Issue Tracker中记录一个错误,以便我们深入研究。

第34列ssl_cipher是第一个打破的blob列。其他人也打破了。最简单的责任案例 -

function displayingOneUser(){
  var conn = Jdbc.getCloudSqlConnection("jdbc:google:rdbms://INSTANCE_NAME/mysql");
  var sql = conn.createStatement();
  var resultSet = sql.executeQuery("select ssl_cipher from user");
  if(resultSet.next()){
    resultSet.getObject(1);//this line will break
  }
  sql.close();
  conn.close();
}