Ruby在Windows上找不到sqlite3驱动程序

时间:2009-02-05 12:07:08

标签: ruby sqlite

我正在尝试在Windows上设置Ruby on Rails。我正在使用看起来相当不错的Flash Rails发行版,但是sqlite3存在问题。我发现线程告诉我安装版本1.2.3,安装正常。我正在使用ruby 1.9.0,每次我尝试运行使用数据库的脚本(例如rake db:create)时,都会收到错误消息“找不到sqlite3的驱动程序”。

这显然是缺少sqlite3.dll,但我的%PATH%中有dll,我也尝试将其复制到我运行脚本的目录中,sqlite3 ruby​​代码所在的目录。

有没有人有任何想法?如果可能的话,我希望所有的红宝石都是自包含的,所以我可以用笔驱动器来使用它。

编辑:为了澄清,我已经使用gem install来安装ruby-sqlite3 gem - 它只是没有功能,因为它找不到sqlite3.dll(即使它实际上存在于我的%PATH%的目录中)

编辑第2部分:在进行了一些挖掘之后,问题似乎是ruby不会加载sqlite3_api.dll。我已经将它复制到我的文件系统上,我只是无法读取文件。同一目录中的其他dll库(例如zlib.dll)工作正常! 我尝试将dll安装到system32中,但这也无效。

8 个答案:

答案 0 :(得分:7)

简单问题就是sqlite3-ruby 1.2.3与ruby 1.9不兼容。这是因为ruby 1.9不使用.dll文件来代替它使用.so文件的c库。此外,因为sqlite3_api.dll是针对msvcrt-ruby18.dll编写的。这意味着它特别只支持ruby 1.8。*。

好消息是有一个胖二进制版本将支持ruby 1.8和ruby 1.9。卸载所有以前版本的sqlite3-ruby,然后安装此版本。 (您可能必须在卸载后手动删除gem的某些版本。)为了安装它,请使用

install sqlite3-ruby --source http://gems.rubyinstaller.org

有关详细信息,请参阅this网站

答案 1 :(得分:3)

尝试安装sqlite3-ruby gem:

gem install sqlite3-ruby

答案 2 :(得分:3)

最近发生了类似的事情,所以我想我会更新我的答案。

作为参考,有一个位于gem的lib目录中的sqlite3_api.dll文件。还需要在路径上访问sqlite3.dll文件。它们是不同的文件,第一个是gem需要将Ruby连接到C代码,而第二个包含实际的Sqlite实现。

最好从sqlite网站获取第二个文件并将其解压缩到Ruby \ bin目录(因为你不应该手动将DLL放入windows或windows \ system目录中)。

因此,需要参考“sqlite3_api.dll”:

Ruby\lib\ruby\gems\1.8\gems\sqlite3-ruby-1.2.3-x86-mswin32\lib

和“sqlite3.dll”需要在路径上,可能在:

Ruby\bin

至于“找不到驱动程序”的问题,我建议先尝试简单的事情并确保gems安装正确,最新,并且RUBYLIB和PATH环境变量设置正确。 (可能需要重新启动系统才能完全传播更改。)

答案 3 :(得分:3)

Re this link 下载sqlitedll-3_6_10.zip并解压缩到ruby / bin!

答案 4 :(得分:1)

尝试转到sqlite.org下载页面并获取压缩的dll。然后把它放在你的c:\windows\system32文件夹中,这应该允许Ruby找到它。

答案 5 :(得分:1)

运行install sqlite3-ruby

后重新启动计算机

答案 6 :(得分:0)

澄清一下,您使用的是哪种宝石? sqlite-rubysqlite3-ruby

他们是同一个项目的一部分,但不同的版本。关键是sqlite3似乎包含了驱动程序代码。

我假设你试图使用第一个,因为它给了我同样的错误。如果是这样,请尝试切换。


另外..你的意思是字面意思吗?

  

但我的%PATH%

中有dll
  1. PATH=...;C:\sqlite\sqlite3.dll
  2. PATH=...;C:\sqlite
  3. 第一个会尝试找到 C:\sqlite\sqlite3.dll\sqlite3.dll ,AFAIK。

答案 7 :(得分:0)

我使用Ruby 1.8.7(也适用于1.9.1) 操作系统是WindowsXP SP3

  1. 转到 http://www.sqlite.org/download.html 并下载文件 sqlitedll-3_7_0_1.zip(265.19 KiB) 并解压然后我们会得到 sqlite3.dll

  2. 将sqlite3.dll复制到您的bin文件夹     如C:\ Ruby191 \ bin或C:\ Ruby187 \ bin     然后它起作用