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

时间:2015-10-21 19:30:02

标签: ruby windows scheduled-tasks windows-7-x64 oci

我有一个脚本可以对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(oracle gem)

64位Windows的Oracle Instant Client

我已经对似乎是类似的错误做了一些研究,似乎问题与为32位Windows平台构建的gem有关,但我不知道该怎么做,特别是因为它从命令行调用时工作正常。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

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

当我安装Oracle Instant Client时,我必须将其添加到PATH。但是任务计划程序找不到客户端,因为需要真正重新启动才能更新其已知的PATH变量。

通过杀死taskeng.exe解决并再次启动它。 (重新启动计算机将产生同样的效果。)感谢Kubo Takehiro帮助我确定问题!