ruby OCI 脚本在 运行 作为计划任务时遇到错误

ruby OCI script encounters error when run as scheduled task

我有一个查询 oracle 数据库的脚本。当我从命令行调用脚本时,一切正常并且符合预期。

但是,当我设置 Windows 任务计划程序来执行脚本时,我在需要 OCI gem 时遇到错误,我不确定为什么:

C:/Ruby21-x64/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': 193: %1 is not a valid Win32 application.   
- C:/Ruby21-x64/lib/ruby/gems/2.1.0/extensions/x64-mingw32/2.1.0/ruby-oci8-2.1.8/oci8lib_210.so (LoadError)

我的环境:

64 位 Windows 7

Ruby 2.1.7

ruby-oci8 -v 2.1.8(神谕gem)

64 位 Oracle 即时客户端Windows

我对类似的错误进行了一些研究,似乎问题与为 32 位 Windows 平台构建的 gem 有关,但我不是确定如何处理它,特别是因为它在从命令行调用时工作正常。

非常感谢任何帮助!

此问题是由 PATH 环境变量未在任务计划程序进程中更新引起的。任务计划程序进程 (taskeng.exe) 在后台运行,即使您关闭 GUI 并再次打开它也是如此。因此关闭 GUI 并再次打开不会重新启动进程以捕获更新的 PATH.

当我安装 Oracle Instant Client 时,我必须将它的位置添加到 PATH。但是 Task Scheduler 找不到客户端,因为它需要真正重新启动才能更新其已知的 PATH 变量。

通过杀死 taskeng.exe 并重新启动它来解决。 (重启电脑效果一样。)感谢久保武宏帮我找出问题!