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

使用Terraform null_resource执行liquibase时无法打开lb.sql文件

解决"unable to open file 'lb.sql'"问题

以下是针对该错误的排查和解决步骤:

  • 确认文件位置
    你的local-exec指定了working_dir = path.module,意味着执行命令时的工作目录是当前Terraform模块的根目录(即当前.tf文件所在目录)。请确保lb.sql文件确实存在于这个目录下。如果文件在其他路径,需要在命令中使用相对该目录的路径或绝对路径,比如./scripts/lb.sql(若文件在子目录scripts中)。

  • 添加文件存在依赖
    如果lb.sql是通过其他Terraform资源生成(比如local_file)或外部步骤生成的,必须在depends_on中添加对应的资源依赖,确保文件完全生成后再执行SQLcl命令。示例:

    depends_on = [
      local_file.autonomous_database_wallet_file,
      local_file.lb_sql_file  # 假设这是生成lb.sql的资源
    ]
    
  • 检查文件权限
    在OCI DevOps环境中,执行命令的运行用户可能没有lb.sql的读取权限。可以在命令中添加权限设置步骤:

    command     = <<-EOT
    chmod +r lb.sql
    ./sqlcl/bin/sql -cloudconfig wallet.zip admin/${random_string.password.result}@sandboxProd_high @lb.sql
    EOT
    
  • 添加文件存在校验
    可以在命令开头加入文件存在检查,提前定位问题:

    command     = <<-EOT
    if [ ! -f "lb.sql" ]; then
      echo "ERROR: lb.sql not found in working directory: $(pwd)"
      exit 1
    fi
    ./sqlcl/bin/sql -cloudconfig wallet.zip admin/${random_string.password.result}@sandboxProd_high @lb.sql
    EOT
    
  • OCI DevOps流水线上下文检查
    如果是在DevOps流水线中执行该Terraform脚本,需确保lb.sql被包含在流水线的构建工件中,或者在执行Terraform步骤前,通过流水线任务(如Shell脚本)将lb.sql下载/复制到Terraform模块目录下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:35:09