我在sqlite3-ruby安装期间出现以下错误:
Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.8 extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel'
*** 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.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog … 尝试将NOT NULL列添加到现有表时,我收到以下错误.为什么会这样?我试过rake db:reset认为现有记录是问题,但即使重置数据库后,问题仍然存在.你能帮我搞清楚吗?
迁移文件
class AddDivisionIdToProfile < ActiveRecord::Migration
def self.up
add_column :profiles, :division_id, :integer, :null => false
end
def self.down
remove_column :profiles, :division_id
end
end
Run Code Online (Sandbox Code Playgroud)
错误信息
SQLite3 :: SQLException:无法添加带有默认值NULL的NOT NULL列:ALTER TABLE"profiles"ADD"division_id"integer NOT NULL
升级到OSX Sierra后,我遇到了随机分段错误的问题.它最常出现在运行rails测试时,我相信它是由sqlite3_adapter引起的.
我目前的工作是简单地退出终端并重新启动它.这适用于大约1或2个轨道测试,而第三个我几乎可以保证得到另一个分段故障.
是否有其他人遇到此问题或找到更好的解决方法?
$ rails t
Running via Spring preloader in process 13817
/Users/USER/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:27: [BUG] Segmentation fault at 0x00000000000110
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin16]
Run Code Online (Sandbox Code Playgroud)
编辑:
在深入研究sqlite3_adapter.rb后,我发现导致分段错误的行是创建一个新的SQlite3数据库.
db = SQLite3::Database.new(
config[:database].to_s,
:results_as_hash => true
)
Run Code Online (Sandbox Code Playgroud)
编辑2:
我没有退出并重新启动终端,而是发现运行:
spring stop
Run Code Online (Sandbox Code Playgroud)
暂时停止问题.不是解决方案,而是更好的解决方案.
编辑3:
这似乎是Apple提供的libsqlite3不是叉安全的问题.更多信息可以在这里找到:
https://github.com/sparklemotion/sqlite3-ruby/issues/195
现在,我在〜/ .bashrc文件的底部创建了一个别名:
alias ss='spring stop'
Run Code Online (Sandbox Code Playgroud)
出现问题时,我现在可以输入:
ss
Run Code Online (Sandbox Code Playgroud)
然后重新运行测试.
我正在尝试在OS X 10.6上安装"sqlite3-ruby"gem(或"sqlite3"gem).我正在使用ruby-1.9.2,目前我得到以下内容:
$ sqlite3 --version
3.7.4
$ sudo gem install sqlite3
Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.
/Users/folken/.rvm/rubies/ruby-1.9.2-head/bin/ruby extconf.rb
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.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir …Run Code Online (Sandbox Code Playgroud) 我不小心跑了:
sudo gem install sqlite3
Run Code Online (Sandbox Code Playgroud)
代替:
sudo gem install sqlite3-ruby
Run Code Online (Sandbox Code Playgroud)
所以现在当我运行gem list时,我得到:
gem list
*** LOCAL GEMS ***
sqlite3 (0.0.7)
sqlite3-ruby (1.2.5)
Run Code Online (Sandbox Code Playgroud)
两者有什么区别?我需要两个吗?
在新机器上,使用Windows的1-click安装程序安装ruby.安装了rails 2.3.2和所有相关的gem,然后我安装了sqlite3二进制文件(进入c:\ ruby\bin文件夹).最后我做了gem install sqlite3-ruby -v=1.2.3(这显然是与Windows一起使用的最新版本)
运行时rake db:migrate或在运行时触摸任何ActiveRecord对象时会发生此错误.
错误如下所示:
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
**uninitialized constant Encoding** <----
Run Code Online (Sandbox Code Playgroud)
任何帮助解决此错误将不胜感激!
跟踪:
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:443:in `load_missing_constant'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:80:in `const_missing'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:92:in `const_missing'
C:/Ruby/lib/ruby/gems/1.8/gems/sqlite3-0.0.3/lib/sqlite3/encoding.rb:9:in `find'
C:/Ruby/lib/ruby/gems/1.8/gems/sqlite3-0.0.3/lib/sqlite3/database.rb:69:in `initialize'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:13:in `new'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/sqlite3_adapter.rb:13:in `sqlite3_connection'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in `send'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in `new_connection'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:245:in `checkout_new_connection'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:188:in `checkout'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in `loop'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in `checkout'
C:/Ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:183:in `checkout'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:98:in `connection'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:326:in `retrieve_connection'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:123:in `retrieve_connection'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:115:in `connection'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb:435:in `initialize'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb:400:in `new'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb:400:in `up'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb:383:in …Run Code Online (Sandbox Code Playgroud) 从RVM 1.8.7开始升级到Rails 3.OSX 10.5.8
Output:
josh-crewss-macbook:~ joshcrews$ gem install sqlite3-rubyBuilding native extensions. This could take a while...ERROR: Error installing sqlite3-ruby: ERROR: Failed to build gem native extension.
/Users/joshcrews/.rvm/rubies/ruby-1.8.7-p174/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... no
checking for sqlite3_column_database_name()... no
checking for sqlite3_enable_load_extension()... no
checking for sqlite3_load_extension()... no
creating Makefile
make
gcc -I. -I. -I/Users/joshcrews/.rvm/rubies/ruby-1.8.7-p174/lib/ruby/1.8/i686-darwin9.8.0 -I. -I/usr/local/include -I/opt/local/include -I/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -g -O2 -fno-common -pipe -fno-common -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn …Run Code Online (Sandbox Code Playgroud) 试图在ubuntu上获得Rails,我在安装sqlite3-ruby时遇到了麻烦 - 显然无法找到sqlite3.h.我可以找到错误的所有引用都表明问题是:未安装sqlite3头文件,或者make无法找到它们.在我看来,我已经解决了这两个问题,我仍然看到同样的问题.
不知道这里发生了什么.版本不匹配,也许?这是在ubuntu 10.04.1上使用ruby 1.8.7,sqlite 3.6.22-1,gem 1.3.5和sqlite3-ruby 1.3.1.
david@li88-188:~$ sudo apt-get install sqlite3
Run Code Online (Sandbox Code Playgroud)
[...成功安装...]
Setting up sqlite3 (3.6.22-1) ...
david@li88-188:~$ sudo apt-get install libsqlite3-dev
Run Code Online (Sandbox Code Playgroud)
[...成功安装...]
Setting up libsqlite3-dev (3.6.22-1) ...
david@li88-188:~$ sudo gem install sqlite3-ruby
Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.8 extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel'
*** extconf.rb failed ***
Could …Run Code Online (Sandbox Code Playgroud) 我在crunchbang linux上安装sqlite3-ruby gem时遇到问题.谷歌搜索过去几个小时,并跟随几个有同样问题的人,我仍然没有得到它的工作.
这是我在尝试'sudo gem install sqlite3-ruby'之后看到的
构建原生扩展.这可能需要一段时间...
错误:安装sqlite3-ruby时
出错:错误:无法构建gem本机扩展.
/usr/bin/ruby1.8 extconf.rb
检查sqlite3.h ...是
检查-lsqlite3中的sqlite3_libversion_number()...是
检查rb_proc_arity()...不
检查sqlite3_initialize()...否
sqlite3-ruby只支持sqlite3版本3.6.16+,请升级!
*extconf.rb失败*
由于某些原因无法创建Makefile,可能缺少
必要的库和/或标头.检查mkmf.log文件以获取更多
详细信息.您可能需要配置选项.
我下载了sqlite-amalgamation-3.7.0.1.tar.gz并发出以下命令:
tar zxvf sqlite-amalgamation-3.7.0.1.tar.gz
cd cd sqlite-3.7.0.1
mkdir $ HOME/sqlite
./configure --prefix = $ HOME/sqlite
make && make install
sudo gem install sqlite3-ruby - -与-sqlite3的-DIR = $ HOME /源码
但是,我仍然得到完全相同的错误.我使用'sudo apt-get install sqlite3 libsqlite3-dev',但我仍然得到完全相同的错误.
有什么建议?
而作为一个小小的一边,为什么当我使用'sudo apt-get install sqlite3'时,它抓取3.5.9而不是我手动下载的3.7.0.1?
我是Rails的新手,我正在为我的雇主构建一个简单的项目跟踪应用程序.我一直在我的Mac上开发应用程序并将其推送到github.我只是设法将我的github repo克隆到我公司防火墙后面的一个Windows框中,希望让同事们试用这个应用程序.
但是当我去rake db:migrate来初始化windows框中的数据库时,我收到以下错误消息:
$ rake db:migrate --trace
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
Could not find table 'projects'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
rd/connection_adapters/sqlite3_adapter.rb:29:in `table_structure'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/faker-0.3.1/lib/extensions/object.
rb:3:in `returning'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
rd/connection_adapters/sqlite3_adapter.rb:28:in `table_structure'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
rd/connection_adapters/sqlite_adapter.rb:228:in `columns'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
rd/base.rb:1271:in `columns'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
rd/base.rb:1279:in `columns_hash'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
rd/base.rb:1578:in `find_one'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
rd/base.rb:1569:in `find_from_ids'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
rd/base.rb:616:in `find'
c:/Rails_Projects/molex_app/config/routes.rb:15
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_contro
ller/routing/route_set.rb:226:in `draw'
c:/Rails_Projects/molex_app/config/routes.rb:1
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
port/dependencies.rb:145:in `load_without_new_constant_marking'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
port/dependencies.rb:145:in `load'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
port/dependencies.rb:521:in `new_constants_in'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
port/dependencies.rb:145:in `load'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_contro
ller/routing/route_set.rb:286:in `load_routes!'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_contro
ller/routing/route_set.rb:286:in `each'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_contro
ller/routing/route_set.rb:286:in `load_routes!'
c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_contro …Run Code Online (Sandbox Code Playgroud)