ruby on rails - Configuración de Discurso en Ubuntu 12.04 LTS
ruby-on-rails rails-migrations (2)
He configurado una nueva base de datos para instalar Discurso en PostgreSQL. Cuando ejecuto rake db: migrate, crea la mayoría de las tablas, pero luego falla:
-- execute("INSERT INTO archetypes (name_key, created_at, updated_at) VALUES (''poll'', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)")
-> 0.0009s
-- add_column(:forum_threads, :archetype_id, :integer, {:default=>1, :null=>false})
-> 0.0209s
== CreateArchetypes: migrated (0.0424s) ======================================
== AddMetaDataToForumThreads: migrating ======================================
-- execute("CREATE EXTENSION IF NOT EXISTS hstore")
rake aborted!
An error has occurred, this and all later migrations canceled:
PG::Error: ERROR: could not open extension control file "/usr/share/postgresql/9.1/extension/hstore.control": No such file or directory
: CREATE EXTENSION IF NOT EXISTS hstore
/usr/local/rvm/gems/ruby-1.9.3-p385/bundler/gems/MiniProfiler-d149f34fcdb6/Ruby/lib/patches/sql_patches.rb:155:in `exec''
/usr/local/rvm/gems/ruby-1.9.3-p385/bundler/gems/MiniProfiler-d149f34fcdb6/Ruby/lib/patches/sql_patches.rb:155:in `async_exec''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/connection_adapters/postgresql_adapter.rb:652:in `block in execute''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activesupport-3.2.12/lib/active_support/notifications/instrumenter.rb:20:in `instrument''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `execute''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:466:in `block in method_missing''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:438:in `block in say_with_time''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:438:in `say_with_time''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:458:in `method_missing''
/root/discourse/db/migrate/20120921162512_add_meta_data_to_forum_threads.rb:3:in `change''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:407:in `block (2 levels) in migrate''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:407:in `block in migrate''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:129:in `with_connection''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:389:in `migrate''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:528:in `migrate''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:720:in `block (2 levels) in migrate''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:775:in `call''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:775:in `block in ddl_transaction''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/transactions.rb:208:in `transaction''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:775:in `ddl_transaction''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:719:in `block in migrate''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:700:in `each''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:700:in `migrate''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:570:in `up''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/migration.rb:551:in `migrate''
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/activerecord-3.2.12/lib/active_record/railties/databases.rake:179:in `block (2 levels) in <top (required)>''
/usr/local/rvm/gems/ruby-1.9.3-p385/bin/ruby_noexec_wrapper:14:in `eval''
/usr/local/rvm/gems/ruby-1.9.3-p385/bin/ruby_noexec_wrapper:14:in `<main>''
Tasks: TOP => db:migrate
¿Cualquier pista?
Parece que a partir del error de la base de datos "no se pudo abrir el archivo de control de extensión" al intentar CREATE EXTENSION [...] hstore
que la extensión hstore
no está instalada.
En Ubuntu, puede instalar la extensión instalando el paquete postgresql-contrib
.
sudo apt-get install postgresql-contrib
El usuario terryjray ha documentado habilitar hstore en un Gist.
Si tiene dos instalaciones Postgresql
en su ubuntu, como 9.1
y 9.3
Antes de ejecutar la instalación específica de la versión, es posible que deba agregar el repositorio de postgres correcto usando las instrucciones que voy a parafrasear a continuación en caso de que desaparezcan:
deb http://apt.postgresql.org/pub/repos/apt/ UBUNTU_VERSION_NAME-pgdg main
sudo apt-get install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
apt-get update
(UBUNTU_VERSION_NAME debe reemplazarse por trusty o cualquiera que sea el nombre de su versión)
luego puede usar los comandos a continuación para instalar la extensión hstore
en cada servidor por separado:
Postgresql 9.1:
sudo apt-get install postgresql-contrib-9.1
Postgresql 9.3:
sudo apt-get install postgresql-contrib