I have setup a new database for installing Discourse in PostgreSQL. When I run rake db:migrate, it creates most of the tables, but it then fails:
-- 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
Any clue?
It appears from the database error "could not open extension control file" while trying to CREATE EXTENSION [...] hstore
that the extension hstore
is not installed.
On Ubuntu, you can install the extension by installing the postgresql-contrib
package.
sudo apt-get install postgresql-contrib
User terryjray has documented enabling hstore in a Gist.
If you have two Postgresql
installation on your ubuntu such as 9.1
and 9.3
Before running the version specific installation, you may need to add the correct postgres repo using their instructions which I'm paraphrasing below in case they disappear:
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 should be replaced by trusty or whatever your version name is)
then you can use commands below to install the hstore
extension on each server separately:
Postgresql 9.1:
sudo apt-get install postgresql-contrib-9.1
Postgresql 9.3:
sudo apt-get install postgresql-contrib
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With