2

「mysql」データベースのテーブル「user」内のユーザーのすべての列を取得しようとしているときに、奇妙な応答があります。

私はGoogleCloudSQLを使用しており、JDBCクラスを使用してGoogleAppsScriptからアクセスしています。これが私のコードです:

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()を使用すると、問題なく動作します。

それがどこから来るのか考えていますか?

乾杯、

ビクター

4

1 に答える 1

0

私はこの問題を再現することができました、そしてこれは確かにバグであると信じています。これは、デフォルトDBblobのテーブルの列と関係がありますusermysql

ここに画像の説明を入力してください

getObject()これらの列のいずれかを区切り文字で読み込もうとしています。getString()動作します。

良い発見です。これを掘り下げることができるように、 IssueTrackerにバグを記録してください。

その列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();
}
于 2013-02-15T20:22:34.323 に答える