我正在尝试在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中,但这也无效。
答案 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-ruby
或sqlite3-ruby
?
他们是同一个项目的一部分,但不同的版本。关键是sqlite3
似乎包含了驱动程序代码。
我假设你试图使用第一个,因为它给了我同样的错误。如果是这样,请尝试切换。
另外..你的意思是字面意思吗?
但我的%PATH%
中有dll
PATH=...;C:\sqlite\sqlite3.dll
强> PATH=...;C:\sqlite
强> 第一个会尝试找到 C:\sqlite\sqlite3.dll\sqlite3.dll
,AFAIK。
答案 7 :(得分:0)
我使用Ruby 1.8.7(也适用于1.9.1) 操作系统是WindowsXP SP3
转到 http://www.sqlite.org/download.html 并下载文件 sqlitedll-3_7_0_1.zip(265.19 KiB) 并解压然后我们会得到 sqlite3.dll
将sqlite3.dll复制到您的bin文件夹 如C:\ Ruby191 \ bin或C:\ Ruby187 \ bin 然后它起作用