带有Rails的db:test:load上的SQLException [英] SQLException on db:test:load with Rails

查看:77
本文介绍了带有Rails的db:test:load上的SQLException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在开发一个具有多个has_and_belongs_to_many关系的小型但有些复杂的Rails应用程序。它是开源的,代码是此处。一切工作正常,但是最近我添加了新的HABTM关系迁移,并且rspec测试开始失败。 Rake:db:migrate在工作(问题在本地工作),只是不在测试中。运行db:test:load --trace时,出现以下错误:

I've been working on a small but somewhat complex Rails application with multiple has_and_belongs_to_many relationships. It's open source, and the code is here. Everything was working fine, but recently I added a new HABTM relationship migration, and an rspec test started to fail. Rake:db:migrate was working (and the issue was working locally), just not in testing. Upon running db:test:load --trace , I get the following error:


:fermi og $ rake db:test:load- -trace /Users/og/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/yaml.rb:56:in
< top(必需)>':看来您的ruby安装缺少psych
(用于YAML输出)。要消除此警告,请安装libyaml
并重新安装红宝石。
**调用db:test:load(first_time)
**调用db:test:purge(first_time)
**调用环境(first_time)
**执行环境
**调用db:load_config(首次)
**执行db:load_config
**执行db:test:清除
**执行db:test:load
**调用db:test:load_schema(首次)
**调用db:test:purge
**执行db:test:load_schema
**调用db:schema:load(初次)
**调用环境
**调用db:load_config
**执行db:schema:load rake中止! SQLite3 :: SQLException:对象名称保留供内部使用:sqlite_sp_functions:创建表
sqlite_sp_functions(名称文本,文本文本)
/Users/og/.rvm/gems/ruby- 1.9.3-head / gems / sqlite3-1.3.7 / lib / sqlite3 / database.rb:91:in
初始化'
/Users/og/.rvm/ gems / ruby​​-1.9.3-head / gems / sqlite3-1.3.7 / lib / sqlite3 / database.rb:91:in
new'
/ Users / og / .rvm / gems / ruby​​-1.9.3-head / gems / sqlite3-1.3.7 / lib / sqlite3 / database.rb:91:in
准备'
/用户/og/.rvm/gems/ruby-1.9.3-head/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:134:in
执行'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/connection_adapters/sqlite_adapter.rb:278:
阻止执行'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract_adapter.rb:280:in 阻止登录'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activesupport-3.2.9/lib/act ive_support / notifications / instrumenter.rb:20:in
仪器'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord- 3.2.9 / lib / active_record / connection_adapters / abstract_adapter.rb:275:in log'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord -3.2.9 / lib / active_record / connection_adapters / sqlite_adapter.rb:278:在
执行'
/Users/og/.rvm/gems/ruby-1.9.3 -head / gems / activerecord-3.2.9 / lib / active_record / connection_adapters / abstract / schema_statements.rb:170:in
create_table'
/Users/og/.rvm/ gem / ruby​​-1.9.3-head / gems / activerecord-3.2.9 / lib / active_record / migration.rb:466:in
中的method_missing'
/ Users / og /。 rvm / gems / ruby​​-1.9.3-head / gems / activerecord-3.2.9 / lib / active_record / migration.rb:438:在say_with_time中的
/ Users / og / .rvm / rubies / ruby​​-1.9.3-head / lib / ruby​​ / 1.9.1 / benchmark.rb:280:in
measure'
/ Users / og / .rvm / gems / ruby​​-1.9.3-head / gems / activerecord-3.2.9 / lib / active_record / mi gration.rb:438:in say_with_time'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/migration .rb:458:in
method_missing'/Users/og/Documents/websites/fermi/db/schema.rb:49:in
块位于< top (必需)>'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/schema.rb:50:在$ b $中b
instance_eval'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/schema.rb:50:在
define'中/Users/og/Documents/websites/fermi/db/schema.rb:14:in '
/ Users / og / .rvm / gems / ruby​​-1.9.3-head / gems / activesupport-3.2.9 / lib / active_support / dependencies.rb:245:in
load'
/ Users /og/.rvm/gems/ruby-1.9.3-head/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:245:在
加载块中'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236:
load_dependency'
/用户s / og / .rvm / gems / ruby​​-1.9.3-head / gems / activesupport-3.2.9 / lib / active_support / dependencies.rb:245:in
load'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/railties/databases.rake:388:in
在(顶部(必需))中阻止(3个级别)
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib /rake/task.rb:246:in
call'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake -10.0.4 / lib / rake / task.rb:246:在
块中执行'
/Users/og/.rvm/gems/ruby-1.9.3- head@global/gems/rake-10.0.4/lib/rake/task.rb:241:在
每个'
/Users/og/.rvm/gems/ ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:241:in
执行'
/ Users / og / .rvm / gems / ruby​​-1.9.3-head @ global / gems / rake-10.0.4 / lib / rake / task.rb:184:in invoke_with_call_chain'$$$ b
块中b $ b /用户/og/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/monitor.rb:211:in
mon_synchronize'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:177:在
中invoke_with_call_chain'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:170:在
invoke'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/railties/databases.rake:499:in
中的
块(3个级别)/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/ lib / rake / task.rb:246:in
call'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake -10.0.4 / lib / rake / task.rb:246:在
块中执行'
/Users/og/.rvm/gems/ruby-1.9.3 -head@global/gems/rake-10.0.4/lib/rake/task.rb:241:in
每个'
/Users/og/.rvm/gems/ ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:241:in
执行'
/ Users / og /.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:184:in invoke_with_call_chain'中的
块b $ b /用户/og/.r vm / rubies / ruby​​-1.9.3-head / lib / ruby​​ / 1.9.1 / monitor.rb:211:in
mon_synchronize'
/ Users / og /。 rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:177:in
invoke_with_call_chain'
/ Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:170:in
调用'
/Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/railties/databases.rake:479:in
(顶部(必需))中的块(3个级别)'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4 /lib/rake/task.rb:246:in
call'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems /rake-10.0.4/lib/rake/task.rb:246:在
块中执行'
/Users/og/.rvm/gems/ruby-1.9。 3-head@global/gems/rake-10.0.4/lib/rake/task.rb:241:在
每个'
/Users/og/.rvm/ gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:241:in
执行'
/ Users / og / .rvm / gems / ruby​​-1.9.3-h ead@global/gems/rake-10.0.4/lib/rake/task.rb:184:in invoke_with_call_chain中的
块中的
/Users/og/.rvm/ rubies / ruby​​-1.9.3-head / lib / ruby​​ / 1.9.1 / monitor.rb:211:in
mon_synchronize'
/Users/og/.rvm/gems /ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:177:in
invoke_with_call_chain'
/ Users / og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:170:in
调用'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:143:在
invoke_task'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:101:在$ b $中b top_level中的块(2个级别)
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake /application.rb:101:in
每个'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0 .4 / lib / rake / application.rb:101:位于top_level的
块中
/Users/og/.rvm/gems/ruby-1.9。 3-head@global/gems/rake-10.0.4/lib/rake/application.rb:110:在
run_with_threads'
/Users/og/.rvm/ gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:95:in
top_level'
/ Users / og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:73:在
块中运行'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:160:在
standard_exception_handling'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:70:in
运行'
/Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/bin/rake:33:在
< top(必需)>中/Users/og/.rvm/gems/ruby-1.9.3-head/bin/rake:23:在
load'/Users/og/.rvm/gems/ruby-1.9.3-head/bin/rake:23:in`'
任务:TOP => db:schema:load

:fermi og$ rake db:test:load --trace /Users/og/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/yaml.rb:56:in <top (required)>': It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby. ** Invoke db:test:load (first_time) ** Invoke db:test:purge (first_time) ** Invoke environment (first_time) ** Execute environment ** Invoke db:load_config (first_time) ** Execute db:load_config ** Execute db:test:purge ** Execute db:test:load ** Invoke db:test:load_schema (first_time) ** Invoke db:test:purge ** Execute db:test:load_schema ** Invoke db:schema:load (first_time) ** Invoke environment ** Invoke db:load_config ** Execute db:schema:load rake aborted! SQLite3::SQLException: object name reserved for internal use: sqlite_sp_functions: CREATE TABLE "sqlite_sp_functions" ("name" text, "text" text) /Users/og/.rvm/gems/ruby-1.9.3-head/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in initialize' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in new' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in prepare' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:134:in execute' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/connection_adapters/sqlite_adapter.rb:278:in block in execute' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract_adapter.rb:280:in block in log' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activesupport-3.2.9/lib/active_support/notifications/instrumenter.rb:20:in instrument' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract_adapter.rb:275:in log' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/connection_adapters/sqlite_adapter.rb:278:in execute' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/schema_statements.rb:170:in create_table' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/migration.rb:466:inblock in method_missing' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/migration.rb:438:in block in say_with_time' /Users/og/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/benchmark.rb:280:in measure' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/migration.rb:438:in say_with_time' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/migration.rb:458:inmethod_missing' /Users/og/Documents/websites/fermi/db/schema.rb:49:in block in <top (required)>' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/schema.rb:50:in instance_eval' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/schema.rb:50:in define' /Users/og/Documents/websites/fermi/db/schema.rb:14:in' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:245:in load' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:245:in block in load' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236:in load_dependency' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:245:in load' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/railties/databases.rake:388:in block (3 levels) in <top (required)>' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:246:in call' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:246:in block in execute' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:241:in each' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:241:in execute' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:184:in block in invoke_with_call_chain' /Users/og/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/monitor.rb:211:in mon_synchronize' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:177:in invoke_with_call_chain' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:170:in invoke' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/railties/databases.rake:499:in block (3 levels) in ' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:246:in call' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:246:in block in execute' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:241:in each' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:241:in execute' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:184:in block in invoke_with_call_chain' /Users/og/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/monitor.rb:211:in mon_synchronize' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:177:in invoke_with_call_chain' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:170:in invoke' /Users/og/.rvm/gems/ruby-1.9.3-head/gems/activerecord-3.2.9/lib/active_record/railties/databases.rake:479:in block (3 levels) in <top (required)>' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:246:in call' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:246:in block in execute' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:241:in each' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:241:in execute' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:184:in block in invoke_with_call_chain' /Users/og/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/monitor.rb:211:in mon_synchronize' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:177:in invoke_with_call_chain' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/task.rb:170:in invoke' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:143:in invoke_task' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:101:in block (2 levels) in top_level' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:101:in each' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:101:in block in top_level' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:110:in run_with_threads' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:95:in top_level' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:73:in block in run' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:160:in standard_exception_handling' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/lib/rake/application.rb:70:in run' /Users/og/.rvm/gems/ruby-1.9.3-head@global/gems/rake-10.0.4/bin/rake:33:in <top (required)>' /Users/og/.rvm/gems/ruby-1.9.3-head/bin/rake:23:in load' /Users/og/.rvm/gems/ruby-1.9.3-head/bin/rake:23:in `' Tasks: TOP => db:schema:load

我的schema.rb文件如下:

My schema.rb file is the following:

# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
# It's strongly recommended to check this file into your version control system.

ActiveRecord::Schema.define(:version => 20130519192155) do

  create_table "distributions", :force => true do |t|
    t.float    "mean"
    t.float    "spread"
    t.float    "wideness"
    t.datetime "created_at",   :null => false
    t.datetime "updated_at",   :null => false
    t.integer  "operation_id"
    t.string   "type"
    t.string   "name"
  end

  create_table "distributions_models", :id => false, :force => true do |t|
    t.integer "distribution_id"
    t.integer "model_id"
  end

  create_table "distributions_operations", :id => false, :force => true do |t|
    t.integer "distribution_id"
    t.integer "operation_id"
  end

  create_table "models", :force => true do |t|
    t.string   "name"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

  create_table "operations", :force => true do |t|
    t.string   "operator"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

  create_table "sqlite_sp_functions", :id => false, :force => true do |t|
    t.text "name"
    t.text "text"
  end

# Could not dump table "sqlite_stat1" because of following StandardError
#   Unknown type '' for column 'tbl'

# Could not dump table "sqlite_stat3" because of following StandardError
#   Unknown type '' for column 'tbl'

  create_table "sqlite_vs_links_names", :id => false, :force => true do |t|
    t.text "name"
    t.text "alias"
  end

  create_table "sqlite_vs_properties", :id => false, :force => true do |t|
    t.text "parentType"
    t.text "parentName"
    t.text "propertyName"
    t.text "propertyValue"
  end

  create_table "sqlite_vsp_diagrams", :id => false, :force => true do |t|
    t.text "name"
    t.text "diadata"
    t.text "comment"
    t.text "preview"
  end

end

任何帮助或信息将不胜感激。我已经在网上搜索了很长时间的这些错误,但是在网上却发现很少。

Any help or information would be much appreciated. I've search these errors online for quite a while, but have found very little online.

推荐答案

对我有用的是删除schema.rb,这是架构定义文件。

What worked for me was to delete schema.rb, which is the schema definition file.

(此文件中的第一段注释建议删除该文件并生成一个新文件,而不是对其进行编辑。)

(The first paragraph of comments within this file recommends deleting it and generating a new one, rather than editing it.)

然后只需运行 rake db:migrate ,即可执行所有迁移并重新创建schema.rb文件。

Then just run rake db:migrate, which performs all the migrations and re-creates the schema.rb file.

这篇关于带有Rails的db:test:load上的SQLException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆