You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google App Script更新数据库行失败排查求助

问题描述

尝试编写Google App Script代码更新数据库行,代码执行无报错,但数据库内的行未更新,相关代码如下:

var Database_Host = 'xxx.com'
var Database_Name = 'DB'
var Database_username = 'DB'
var Database_password = 'Password'
var Port_number = '306'             //DB details are hidden

function DB_Update(){

  var url = 'jdbc:mysql://' + Database_Host + ':' + Port_number + '/' + Database_Name
  Logger.log(url)
  var conn = Jdbc.getConnection(url, Database_username, Database_password);
  Logger.log(conn);

  conn.setAutoCommit(false);

    var stmt = conn.createStatement();
var results = stmt.executeUpdate('update time set flag = 0 where id in (13671)');
stmt.executeUpdate(results);
conn.commit();

  conn.setAutoCommit(true);
stmt.close();
conn.close();

}
问题排查与修复
  • 核心错误:重复执行executeUpdate
    stmt.executeUpdate()执行后返回的是受影响的行数(数字类型),你又把这个数字传给stmt.executeUpdate(results),相当于让JDBC执行一个数字作为SQL语句,这是无效操作,直接破坏了原本的更新逻辑,导致实际更新未生效。

  • 修复后的代码

var Database_Host = 'xxx.com'
var Database_Name = 'DB'
var Database_username = 'DB'
var Database_password = 'Password'
var Port_number = '306'             //DB details are hidden

function DB_Update(){
  var url = 'jdbc:mysql://' + Database_Host + ':' + Port_number + '/' + Database_Name
  Logger.log(url)
  var conn = Jdbc.getConnection(url, Database_username, Database_password);
  Logger.log(conn);

  conn.setAutoCommit(false);

  var stmt = conn.createStatement();
  // 仅执行一次更新语句,获取受影响行数用于排查
  var affectedRows = stmt.executeUpdate('update time set flag = 0 where id in (13671)');
  Logger.log('受影响行数:' + affectedRows); // 通过日志确认是否有行被匹配更新
  conn.commit();

  conn.setAutoCommit(true);
  stmt.close();
  conn.close();
}
  • 额外排查点
    1. 端口号验证:MySQL默认端口为3306,确认你填写的306是否为数据库实际使用端口
    2. 数据存在性检查:执行select * from time where id=13671,确认目标行是否存在
    3. 用户权限确认:确保当前数据库用户拥有time表的UPDATE权限
    4. 日志分析:查看affectedRows的值,若返回0说明WHERE条件未匹配到任何行,需检查条件是否正确

内容的提问来源于stack exchange,提问作者Siva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:10:28