I am using postgres with my django app and I had manually created the hstore extension in the database. But, when I run tests it tries to create a new database and fails when the hstore extension is not found.
I am getting the following errors:
django.db.utils.ProgrammingError: hstore type not found in the database. please install it from your 'contrib/hstore.sql' file
I have update my migrations as per this post and it's as follows:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
from django.conf import settings
from django.contrib.postgres.operations import HStoreExtension
import django.contrib.postgres.fields
import django.contrib.postgres.fields.hstore
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
HStoreExtension(),
migrations.CreateModel(
name='AppUser',
fields=[
('id', models.AutoField(serialize=False, verbose_name='ID', primary_key=True, auto_created=True)),
('created_date', models.DateTimeField(auto_now_add=True)),
('modified_date', models.DateTimeField(auto_now=True)),
('lock', models.BooleanField(default=False)),
('username', models.CharField(max_length=100)),
('email', models.EmailField(max_length=150)),
('social_data', django.contrib.postgres.fields.hstore.HStoreField(blank=True, default='')),
('phone_number', models.CharField(max_length=15)),
('photo', models.URLField(blank=True)),
('gender', models.TextField(max_length=6)),
('badges', django.contrib.postgres.fields.ArrayField(size=None, base_field=models.CharField(max_length=30))),
],
options={
'abstract': False,
},
),
]
As it stated in documentation:
The hstore extension is not automatically installed on use with this package: you must install it manually.
For this you must connect to the database and create an extension:
CREATE EXTENSION hstore;
To run tests, hstore extension must be installed on template1 database. To install hstore on template1:
$ psql -d template1 -c 'create extension hstore;'
For me it worked like a charm! :)
Check if extension is working: connect to required database with correspondent user, and issue:
`CREATE table test(id serial, value hstore);'
You should get: CREATE TABLE
response if everything is ok.
The following steps will help you to create hstore
extension.
$ sudo su - postgres
$ psql
$ \c data_base_name
$ CREATE EXTENSION hstore;
It's worked for me.
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