87

当我尝试在 Ruby 2.0.0 上使用 Rails 4.0.0 设置基本安装和启动服务器时,我面临以下错误消息。

/usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `rescue in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
    from /home/penchal/new/site/config/application.rb:7:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

如何避免此错误消息并继续进行?

4

20 回答 20

121

找到你的 sqlite3 gemspec 文件。一个例子是 /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

窗户: C:\Ruby21\lib\ruby\gems\2.1.0\specifications

您应该根据您的 Rubygem 路径和 sqlite3 版本进行调整。编辑上面的文件并查找以下行

s.require_paths=["lib"]

将其更改为

s.require_paths= ["lib/sqlite3_native"]
于 2013-07-20T12:45:50.280 回答
21

由于拉取请求 #229已合并,因此可以按git:密钥安装 sqlite3。可以通过以下添加轻松使用 sqlite3 Gemfile

gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"

这适用于 RubyInstaller-2.4 和更新版本。mingw-w64-x86_64-sqlite3它会在你运行时自动安装所需的 pacman 包bundler install

RubyInstaller2 FAQ中有更多关于 Windows 上 Rails 的提示。

于 2018-04-09T15:53:49.867 回答
19

见:<a href="https://stackoverflow.com/a/39136421/6755206">https://stackoverflow.com/a/39136421/6755206

幸运的是,你不必切换到 ruby​​ 2.0
有一个解决这个问题的方法,经过无数次尝试......

https://github.com/hwding/sqlite3-ruby-win


脚步

  • gem uninstall sqlite3 --all

资源

建造

  • 在提取的目录中运行命令行
  • 确保您已安装 C 编译器并将其添加到 PATH
  • gem install bundler
  • bundle install
  • rake native gem
  • 你会发现生成了一个名为“pkg”的目录

安装

  • 输入目录'pkg'
  • gem install --local sqlite3-xxx.gem(‘xxx’是版本号)

查看

  • irb
  • require 'sqlite3'
于 2016-09-04T05:19:26.523 回答
14
gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby

这解决了我的问题。

Windows 10
Ruby 2.5.3
Rails 5.2.2
于 2018-12-20T15:36:36.293 回答
9

只需编辑 Gemfile 并添加 gem 'sqlite3', platform: :ruby.

于 2018-08-09T04:33:54.553 回答
6

没有编译源代码或下载预编译库将解决这个问题,相信我我尝试了一切,问题出在其他地方。这是它在 Windows 上的工作方式:

bundle update sqlite3

在这个关于 nokogiri 的错误之后,您可能会遇到另一个类似的错误,请使用以下命令修复它:

bundle update nokogiri

享受您的 Ruby 应用程序!

于 2017-06-30T13:41:41.580 回答
4

最佳官方安装

我正在使用 rails 5.2.1p57,Windows 10 只需运行以下几行即可解决问题

gem uninstall sqlite3

并卸载所有已安装的版本。再次执行以下命令

gem install sqlite3 --platform=ruby

你现在完成了。让我知道问题是否仍然存在。

于 2018-09-18T05:28:49.770 回答
4

这对我有用:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"
于 2018-09-12T00:05:04.863 回答
4

卸载并重新安装 sqlite3 gem 对我有用。

gem uninstall sqlite3

bundle
于 2015-09-15T17:37:15.497 回答
3

如果最重要的答案不起作用,我发现的一个修复方法就是转到您的 Gemfile 并在 sqlite3 之后添加版本号 1.3.11(而不是 1.3.9)。所以你的 Gemfile 中的行现在应该是:

# Use sqlite3 as the database for Active Record
gem 'sqlite3',  '1.3.11'
于 2016-04-14T01:29:33.847 回答
2

为避免此错误,请确保将gem sqlite3其添加到您的 Gemfile。然后从Sqlite 下载链接中提取“exe”和“dll”到 Ruby 的 bin 文件夹。如果问题仍然存在。尝试这个:

bundle update

gem uninstall sqlite3

如果在 sqlite3 的多个版本之间进行选择,请选择最后一个选项“所有版本”。在此处输入最后一个数字

选择 gem 卸载:
1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. 所有版本
> 3 .
.
如果您删除此 gem,这些依赖项将不会得到满足。
继续卸载?[yN]
> y

gem install sqlite3 --platform=ruby

rails s

这应该有效。

如果以上内容适合您,请通读此链接以获取更多说明。

于 2018-10-16T09:18:03.813 回答
2

当我将 Ruby 版本升级到 2.5.X 时,我遇到了同样的错误。我跟踪 rails task --trace到 sqlite3 不适用于 2.5 版,而不是在我卸载 gem“sqlite3”并最终运行bundle install.

我不知道是什么原因......我读到“sqlite3”还不能用于 ruby​​ 2.5,但我不确定。

于 2018-08-11T04:19:12.840 回答
1

这也发生在我身上。原来我最初安装的是 SQLite 1.3.10,但后来我从 Rails 教程截屏项目中复制了一些 gem,它列出了 SQLite 1.3.9。然后我得到了和你一样的错误。我将它改回 1.3.10 并且它有效。

(这是在 Windows 7 上。我在 Cloud9 IDE 上运行截屏教程)。

于 2015-05-14T06:16:39.303 回答
1

这是唯一对我有用的解决方案,源自此 GitHub 问题帖子

  1. 从https://www.sqlite.org/download.html获取 sqlite3 源的 autoconf 版本。
  2. 启动 MSYS 外壳。
  3. 在您的 sqlite3 的解压位置中,仅配置静态版本以避免将 DLL 保留在 PATH: 上./configure --disable-shared
  4. 构建并安装它:make install DESTDIR=/c/dev/ruby/tmp. 您可以更改目录。
  5. 打开 Windows 的命令提示符并运行gem uninstall sqlite3 --all以删除所有现有的 sqlite3 gem。
  6. 再次在 Windows 的命令提示符下,构建并安装 sqlite3 gem: gem install sqlite3 --platform=ruby -- --with-sqlite3-include=C:\dev\ruby\tmp\usr\local\include --with-sqlite3-lib=C:\dev\ruby\tmp\usr\local\lib。那些 include 和 lib 目录可能不同,所以首先检查一下。

我在 Windows 10 上使用 Ruby 2.5.1 版和 Rails 5.2.0 版。

于 2018-04-13T16:30:25.820 回答
1

更新

将以下内容添加到为我修复的 Gemfile:gem 'sqlite3'、'1.4.0'、platforms: :ruby

于 2019-01-28T04:19:57.120 回答
1

我找到了!我看到了这个https://www.youtube.com/watch?v=lsrzvX0qzmA
我安装了:Rails 版本:5.2.1 Ruby 版本:2.5.3 (x64-mingw32) Sqlite 版本 1.3.13
我有你的问题.. .我的解决方案:

  1. 在像 C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\ 这样的安装文件
    夹中,您有文件夹:“sqlite3-1.3.13”“sqlite3-1.3.13-x64-mingw32”
  2. 找到文件
    C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13\lib\sqlite3\sqlite3_native.so
  3. 将其复制到 C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32\lib\sqlite3\2.5\sqlite3_native.so (可能是文件夹不存在 - 创建和粘贴)
于 2018-10-27T21:51:55.467 回答
1

为此在 Gemfile 中更改您的 sqlite3 gem:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

然后运行:

bundle install
于 2019-08-23T19:04:31.957 回答
0

对于 OSX 用户,这可以通过使用 ruby​​ 管理器(例如 rvm)来实现。

如果您编辑 ~/.bash_profile 并添加以下内容:

[[ "$APP" = *"/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/"* ]] && {
  echo Xcode detected
  rvm use system
}

您可以解决该问题。在尝试再次构建之前重新启动 Xcode。

此处跟踪实际问题:https ://openradar.appspot.com/28726736 )。

完全归功于:https ://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

于 2019-02-08T19:37:59.700 回答
0

我有同样的探头,但它很简单,

gem uninstall sqlite3 --all

然后运行

gem install sqlite3

从那里开始一切都应该很好。

于 2021-04-16T11:22:46.200 回答
-1

我试过了: sudo apt-get install sqlite3 然后我试过了: gem install sqlite3 它工作

于 2021-08-13T05:43:30.837 回答