gpt4 book ai didi

ruby-on-rails-3 - 测试环境中的 Rails 3 不允许保存记录,即使使用最新的 sqlite3

转载 作者:行者123 更新时间:2023-12-03 18:16:56 24 4
gpt4 key购买 nike

我看到了这篇文章:

Rails/ActiveRecord/SQLite3: Can't save records in test environment

将我的 sqlite 版本升级到最新版本 (3.7.17) 后,我仍然收到以下错误:

ActiveRecord::StatementInvalid: SQLite3::SQLException: near "SAVEPOINT": syntax error: SAVEPOINT active_record_1

任何时候我尝试创造任何东西。如果我所做的只是加载我的固定装置,一切都很好。

我已通过运行“rails db”确认 rails 正在使用更新的 sqlite3 版本。

在我的开发环境中,我可以整天毫无错误地创建对象(我什至可以让一个对象在创建之后创建另一个对象)。

我的测试环境发生这种情况有什么特别之处?我该如何解决?

编辑:

如果我删除我的测试数据库,然后重做 rake:db:create 和 rake:db:migrate,我仍然会遇到同样的问题。

做“rails console test”让我可以很好地使用测试环境,我可以整天创建对象并查看现有的固定装置。只有当我输入“rake test:units”时我才得到错误...(最初我有错误,但一个错误是合法的(我不知道为什么我没有在开发环境中得到它,并且适配器错误是因为显然你不应该做“rails console RAILS_ENV="test",所以它正在寻找一个名为“RAILS_ENV=test”的环境的适配器

编辑:当我输入“gem uninstall sqlite3”时,它会卸载。当我然后键入“bundle install”时,它在重新安装时遇到问题......现在正在处理它。

    /home/jenny/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb --with-sqlite3-dir=/usr/local/bin/sqlite3 checking for sqlite3.h... *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers.  Check

the mkmf.log file for more details. You may need configuration options.

如果我单独输入“gem install sqlite3”,它工作正常,然后“bundle install”它工作。然而,“rake test:units”有同样的错误。

编辑:当我输入“which sqlite3”时,它会打印出“/usr/local/bin/sqlite3”

我什至不知道 sqlite3 header 是一个东西,所以我怀疑我是否安装了它们。我将尝试弄清楚如何确认这一点,看看它是否有帮助。

编辑:

我在主站点上看不到任何地方可以下载 sqlite3 头文件...只有源代码和预编译的 linux 二进制文件。源码里好像没有特殊的header,就算有,预编译的binary里不也有吗?

编辑:链接到 bundler sqlite3 安装错误,当我手动安装 gem 时不会发生这种情况

http://pastie.org/8063577

编辑:不是设计问题。我以为是,但事实证明我只是在固定装置中创建另一个对象,而不是在测试代码中。

因此,我可以整天在固定装置中创 build 计用户或任何其他类型的对象,但如果我尝试在单元测试中创建一个,我会收到保存点错误。尝试在单元测试中保存固定装置也是如此。

最佳答案

您的问题很可能与您更新了本地 sqlite 但之后您还没有重新安装 sqlite3 gem 这一事实有关。

我建议您按照以下步骤操作:

  1. 从你的 Gemfile 中删除相应的行 gem 'sqlite3'
  2. 运行bundle install
  3. 运行 gem uninstall sqlite3
  4. 将行 gem 'sqlite3' 返回到你的 Gemfile
  5. 再运行一次bundle install

如果您简单地gem uninstall 然后bundle install,它将安装与Gemfile.lock 中记录的相同版本和依赖项。但是,由于您现在使用的是不同且更新程度更高的本地版本,因此在需要时允许 Bundler 安装新版本会更安全。

关于ruby-on-rails-3 - 测试环境中的 Rails 3 不允许保存记录,即使使用最新的 sqlite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17092056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com