【问题标题】:Travis CI hstore does not exist errorTravis CI hstore 不存在错误
【发布时间】:2014-04-02 05:56:11
【问题描述】:

我收到 Travis 的以下错误:

The command "RAILS_ENV=test bundle exec rake db:migrate --trace" exited with 0.
$ bundle exec rake db:test:prepare
rake aborted!
PG::UndefinedObject: ERROR:  type "hstore" does not exist
LINE 1: ...arying(255), "finish" timestamp, "widget_locations" hstore) 
                                                               ^
: CREATE TABLE "webcasts" ("id" serial primary key, "name" character varying(255), "hall_id" integer, "webcast_type" character varying(255), "media_type" character varying(255), "user_id" integer, "details" character varying(255), "template_id" integer, "background_colour" character varying(255), "created_at" timestamp, "updated_at" timestamp, "start" timestamp, "duration" character varying(255), "finish" timestamp, "widget_locations" hstore) 
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `exec'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `block in execute'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract_adapter.rb:425:in `block in log'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.0/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract_adapter.rb:420:in `log'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:127:in `execute'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:190:in `create_table'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/migration.rb:625:in `block in method_missing'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/migration.rb:597:in `block in say_with_time'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/migration.rb:597:in `say_with_time'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/migration.rb:617:in `method_missing'
/home/travis/build/commstrat/virtual_exhibition/db/schema.rb:481:in `block in <top (required)>'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/schema.rb:42:in `instance_eval'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/schema.rb:42:in `define'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/schema.rb:62:in `define'
/home/travis/build/commstrat/virtual_exhibition/db/schema.rb:14:in `<top (required)>'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:222:in `load'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:222:in `block in load'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:213:in `load_dependency'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:222:in `load'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:253:in `block (3 levels) in <top (required)>'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:327:in `block (3 levels) in <top (required)>'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:316:in `block (3 levels) in <top (required)>'
/home/travis/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:367:in `block (3 levels) in <top (required)>'
/home/travis/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `eval'
/home/travis/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => db:schema:load
(See full trace by running task with --trace)

我已经设置了以下迁移:

class SetupHstore < ActiveRecord::Migration
  def self.up
    execute 'CREATE EXTENSION hstore'
  end
  def self.down
    execute 'DROP EXTENSION hstore'
  end
end

由于它不起作用,我还添加了 CREATE EXTENSION hstore 和 belo Travis 配置:

language: ruby
rvm:
  - 2.0.0
env:
  - DB=postgresql
script: 
  - RAILS_ENV=test bundle exec rake db:migrate --trace
  - bundle exec rake db:test:prepare
  - bundle exec rspec spec/
before_script:
  - cp config/database.travis.yml config/database.yml
  - psql -c 'create database virtual_test' -U postgres
  - psql -c 'CREATE EXTENSION hstore' -U postgres
bundler_args: --binstubs=./bundler_stubs
before_install:
  - bundle update debugger-ruby_core_source

发生这种情况有什么原因吗?

【问题讨论】:

    标签: ruby-on-rails ruby postgresql hstore


    【解决方案1】:

    您的配置文件指向三个不同的数据库,“postgresql”、“postgres”和“virtual_test”。

    更改您的测试以使用“postgres”数据库,不要费心创建 virtual_test 数据库,并确保您通过 psql -d postgres -U postgres -c 'CREATE EXTENSION hstore;' 在正确的位置创建 hstore

    【讨论】:

      【解决方案2】:

      将您的 before_script 更改为:

      before_script:
        - psql template1 -c 'create extension hstore;'
        - cp config/database.travis.yml config/database.yml
        - psql -c 'create database virtual_test' -U postgres
      

      请注意,我们在第一行添加了一个扩展。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 2016-11-23
        相关资源
        最近更新 更多