PostgreSQL中字段中的Django ProgrammingError
发布时间:2020-12-13 16:14:52  所属栏目:百科  来源:网络整理 
            导读:models.py class Stop(models.Model): idn = models.PositiveIntegerField(primary_key=True,unique=True) label = models.CharField(null=False,blank=False,max_length=512) coor_x = models.FloatField() coor_y = models.FloatField() buses = models.Ma
                
                
                
            | 
                         
 models.py 
  
  
  
class Stop(models.Model):
    idn = models.PositiveIntegerField(primary_key=True,unique=True)
    label = models.CharField(null=False,blank=False,max_length=512)
    coor_x = models.FloatField()
    coor_y = models.FloatField()
    buses = models.ManyToManyField(Bus)
    latest_query_datetime = models.DateTimeField(default=datetime(2000,1,0))
    latest_query_data = JSONField(default={})
    class Meta:
    ordering = ["label"]
    def __str__(self):
    return self.label 
 当我跑: python3 manage.py makemigrations && python3 manage.py migrate 它引发了一个ProgrammingError,说jsonb数据类型不存在: Migrations for 'rest':
  0007_auto_20160612_1301.py:
    - Alter field latest_query_data on stop
Operations to perform:
  Apply all migrations: contenttypes,rest,auth,sessions,admin
Running migrations:
  Rendering model states... DONE
  Applying rest.0005_auto_20160612_1237...Traceback (most recent call last):
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/db/backends/utils.py",line 64,in execute
    return self.cursor.execute(sql,params)
psycopg2.ProgrammingError: type "jsonb" does not exist
LINE 1: ... TABLE "rest_stop" ADD COLUMN "latest_query_data" jsonb DEFA...
                                                         ^
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "manage.py",line 10,in <module>
    execute_from_command_line(sys.argv)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/core/management/__init__.py",line 353,in execute_from_command_line
    utility.execute()
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/core/management/__init__.py",line 345,in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/core/management/base.py",line 348,in run_from_argv
    self.execute(*args,**cmd_options)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/core/management/base.py",line 399,in execute
    output = self.handle(*args,**options)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/core/management/commands/migrate.py",line 200,in handle
    executor.migrate(targets,plan,fake=fake,fake_initial=fake_initial)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/db/migrations/executor.py",line 92,in migrate
    self._migrate_all_forwards(plan,full_plan,line 121,in _migrate_all_forwards
    state = self.apply_migration(state,migration,line 198,in apply_migration
    state = migration.apply(state,schema_editor)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/db/migrations/migration.py",line 123,in apply
    operation.database_forwards(self.app_label,schema_editor,old_state,project_state)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/db/migrations/operations/fields.py",line 62,in database_forwards
    field,File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/db/backends/base/schema.py",line 396,in add_field
    self.execute(sql,params)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/db/backends/base/schema.py",line 110,in execute
    cursor.execute(sql,params)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/db/backends/utils.py",line 79,in execute
    return super(CursorDebugWrapper,self).execute(sql,params)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/db/utils.py",line 95,in __exit__
    six.reraise(dj_exc_type,dj_exc_value,traceback)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/utils/six.py",line 685,in reraise
    raise value.with_traceback(tb)
  File "/home/erayerdin/.venv/eshot-api/lib/python3.5/site-packages/django/db/backends/utils.py",params)
django.db.utils.ProgrammingError: type "jsonb" does not exist
LINE 1: ... TABLE "rest_stop" ADD COLUMN "latest_query_data" jsonb DEFA... 
 我使用PostgreSQL来使用JSONField并在用户请求视图时更新它.如果我不使用default = {},它会告诉我创建一个. 更深入的分析 我将latest_query_data字段更改为TextField,以便我可以存储为字符串并在需要时转换为dict.但是,这也引起了同样的错误. 环境 > django 1.9.6 
 根据Django文档,JSONField要求PostgreSQL≥9.4且Psycopg2≥2.5.4 
  
                          您使用的PostgreSQL版本是什么? 见https://docs.djangoproject.com/en/dev/ref/contrib/postgres/fields/#django.contrib.postgres.fields.JSONField Ubuntu 14.04存储库只包含9.3版本.您可以查看this以升级您的版本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
相关内容
- actionscript-3 – 比较两个图像并检查相等性
 - NoSQL数据库探讨之一 - 为什么要用非关系数据库?
 - c# – 如何查询所有组和组成员的Active Directory?
 - Sencha ExtJS.无法使用Ext.Ajax.request在跨域上发送POST请
 - ruby-on-rails – 在rails中使用capybara单击一个特定按钮
 - Oracle 函数 Translate 的用法
 - Oracle 12c 在生产库停止Data Guard怎么搞?
 - 元件和 ActionScript
 - c# – 测量方法的哪个部分需要花费大量时间的最佳实践?
 - flex j2EE 例子 和BlazeDs 关于MessageBroker,endpoints 和
 
