6

私はdjangoアプリでpostgresを使用しており、データベースにhstore拡張機能を手動で作成しました。しかし、テストを実行すると、新しいデータベースを作成しようとし、hstore 拡張機能が見つからないと失敗します。

次のエラーが表示されます。

django.db.utils.ProgrammingError: hstore type not found in the database. please install it from your 'contrib/hstore.sql' file

この投稿に従って移行を更新しました。次のとおりです。

# -*- 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,
        },
    ),
    ]
4

2 に答える 2

7

ドキュメントに記載されているように:

hstore 拡張機能は、このパッケージを使用しても自動的にインストールされません。手動でインストールする必要があります。

このためには、データベースに接続して拡張機能を作成する必要があります。

CREATE EXTENSION hstore;

テストを実行するには、hstore 拡張機能を template1 データベースにインストールする必要があります。template1 に hstore をインストールするには:

$ psql -d template1 -c 'create extension hstore;'

私にとって、それは魅力のように機能しました!:)

拡張機能が機能しているかどうかを確認します。対応するユーザーで必要なデータベースに接続し、次を発行します。

`CREATE table test(id serial, value hstore);'

取得する必要があります:CREATE TABLEすべてが問題ない場合の応答。

于 2016-07-04T10:13:56.210 に答える