【问题标题】:ReferenceError: Jdbc is not defined, a V8 version problem?ReferenceError: Jdbc is not defined,V8版本问题?
【发布时间】:2020-05-30 22:14:16
【问题描述】:

我的代码已经每天工作了 6 个月,但它似乎不再工作了。我知道 Google App Script Runtime 对 V8 https://developers.google.com/apps-script/guides/v8-runtime 进行了更新(当我打开“脚本编辑器”时会显示消息)。我怀疑问题出在此版本更改上,因为没有其他任何更改。

我在代码开头使用Jdbc访问一个SQL数据库:

  var connectionName = '';
  var user = '';
  var userPwd = '';
  var db = '';
  var dbUrl = 'jdbc:mysql://'+connectionName+'/'+db;
  var conn = Jdbc.getConnection(dbUrl, user, userPwd); 

我得到的错误信息是“ReferenceError: Jdbc is not defined”,我不知道如何解决。

请问有人可以解决吗?

【问题讨论】:

    标签: google-apps-script jdbc mysql-workbench


    【解决方案1】:

    这是 v8 的一个已知问题,Google 已承认该错误。您可以关注issue tracker 获取更新。

    【讨论】:

    • 您好,问题似乎已解决,但再次出现此“Jdbc”问题。我仍然按照说明进行操作,但它不再起作用了。另一个更新更改了使用 Jdbc 的方法?有人有想法吗?谢谢
    【解决方案2】:

    other answer 是正确的,这里有一些附加信息和可能的解决方法。如a comment on the issue on the Google issuetracker 中所述,您可以使用库将脚本中的Jdbc 传递给库中的函数来完成这项工作。

    库中的示例Lib:

    function getConnection(tjdbc) {
      //dbUrl = ...
      //user = ...
      //password = ...
      return tjdbc.getCloudSqlConnection(dbUrl, user, password);
    }
    

    在使用库的脚本中:

    function doStuff() {
      var connection = Lib.getConnection(Jdbc);
      //... 
    }
    

    由于可以使用生成的JdbcConnection 查询数据库,因此这可能是您需要以这种方式传递Jdbc 的唯一地方。然而,在 V8 下使用Jdbc 访问数据库似乎也比在 Rhino 下慢得多(在我的测试中慢了 800 倍),所以要注意。

    【讨论】:

    • 谢谢,解决方法目前有效。使用我的更新 SQL:Rhino 和 V8 几乎同时运行。
    • 这行得通,谢谢,但是我用另一个 gmail 帐户创建了一个脚本并部署了库,我正在另一个 Gmail 帐户中访问该库以执行数据库查询,Jdbc 库正在使用相同的 Gmail 帐户,但是当我使用除 Jdbc 之外的其他 Gmail 帐户访问该库时出现参考错误,您能帮忙解决这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 2018-12-26
    • 2020-06-14
    • 2019-02-08
    • 2015-11-19
    • 2019-11-10
    相关资源
    最近更新 更多