我有一个脚本可以对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有关,但我不知道该怎么做,特别是因为它从命令行调用时工作正常。
非常感谢任何帮助!
答案 0 :(得分:2)
此问题是由任务计划程序进程中未更新的PATH
环境变量引起的。即使您关闭GUI并再次打开它,任务计划程序进程(taskeng.exe)也会在后台运行。因此,关闭GUI并再次打开不会重新启动进程以捕获更新的PATH
。
当我安装Oracle Instant Client时,我必须将其添加到PATH
。但是任务计划程序找不到客户端,因为需要真正重新启动才能更新其已知的PATH
变量。
通过杀死taskeng.exe解决并再次启动它。 (重新启动计算机将产生同样的效果。)感谢Kubo Takehiro帮助我确定问题!