django.db.utils.ProgrammingError:在尝试向模型中添加Hstorefield后无法适应类型'dict'

问题描述 投票:0回答:1

我正在用Django开发应用程序。

我尝试将Hstorefield添加到我的模型中,然后删除了它,现在我再也无法运行命令manage.py makemigrations,因为我总是会收到此错误

(met5)C:\ Users \ Tommaso \ Django rest框架\ UdemyDjango \ Metaglossario_Gestisco> python manage.py将操作迁移到执行:应用所有迁移:admin,app_metaglossario,auth,contenttypes,sessions运行迁移:正在应用app_metaglossario.0045_model_node_data ...追踪(最近的通话)最后):文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”,_execute中的第84行返回self.cursor.execute(sql,params)psycopg2.ProgrammingError:无法适应类型'dict'

上述异常是以下异常的直接原因:

追踪(最近一次通话):文件“ manage.py”,第21行,在main()文件“ manage.py”,第17行,位于mainexecute_from_command_line(sys.argv)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management__init __。py”,行381,在execute_from_command_line中utility.execute()执行中的文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management__init __。py”,行375self.fetch_command(子命令).run_from_argv(self.argv)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management \ base.py”,第323行,位于run_from_argv中self.execute(* args,** cmd_options)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management \ base.py”,第364行,执行输出= self.handle(* args,** options)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management \ base.py”,第83行,缠绕res = handle_func(* args,** kwargs)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management \ commands \ migrate.py”,234行,在手柄中fake_initial = fake_initial,文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ migrations \ executor.py”,第117行,正在迁移状态= self._migrate_all_forwards(状态,计划,完整计划,fake = fake,fake_initial = fake_initial)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ migrations \ executor.py”,_migrate_all_forwards中的第147行状态= self.apply_migration(状态,迁移,fake = fake,fake_initial = fake_initial)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ migrations \ executor.py”,第245行,位于apply_migration中状态= migration.apply(状态,模式编辑器)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ migrations \ migration.py”,第124行,适用operation.database_forwards(self.app_label,schema_editor,old_state,project_state)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ migrations \ operations \ fields.py”,第112行,在database_forwards中字段,文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ base \ schema.py”,第447行,在add_field中self.execute(sql,params)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ base \ schema.py”,执行中的第137行cursor.execute(sql,params)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”,第99行,在执行中返回super()。execute(sql,params)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”,第67行,执行返回self._execute_with_wrappers(sql,params,many = False,executor = self._execute)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”,第76行,在_execute_with_wrappers中返回执行程序(sql,params,许多,上下文)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”,_execute中的第84行返回self.cursor.execute(sql,params)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ utils.py”,第89行,位于[[exit从exc_value文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”中提高dj_exc_value.with_traceback(traceback),_execute中的第84行返回self.cursor.execute(sql,params)django.db.utils.ProgrammingError:无法适应类型'dict'

(met5)C:\ Users \ Tommaso \ Django rest框架\ UdemyDjango \ Metaglossario_Gestisco> python manage.py makemigrations迁移“ app_metaglossario”:app_metaglossario \ migrations \ 0054_model_node.py-创建模型model_node

(met5)C:\ Users \ Tommaso \ Django rest框架\ UdemyDjango \ Metaglossario_Gestisco> python manage.py将操作迁移到执行:应用所有迁移:admin,app_metaglossario,auth,contenttypes,sessions运行迁移:正在应用app_metaglossario.0045_model_node_data ...追踪(最近的通话)最后):文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”,_execute中的第84行返回self.cursor.execute(sql,params)psycopg2.ProgrammingError:无法适应类型'dict'

上述异常是以下异常的直接原因:

追踪(最近一次通话):文件“ manage.py”,第21行,在main()文件“ manage.py”,第17行,位于main中execute_from_command_line(sys.argv)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management__init __。py”,行381,在execute_from_command_line中utility.execute()执行中的文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management__init __。py”,行375self.fetch_command(子命令).run_from_argv(self.argv)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management \ base.py”,第323行,位于run_from_argv中self.execute(* args,** cmd_options)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management \ base.py”,第364行,执行输出= self.handle(* args,** options)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management \ base.py”,第83行,缠绕res = handle_func(* args,** kwargs)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ core \ management \ commands \ migrate.py”,234行,在手柄中fake_initial = fake_initial,文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ migrations \ executor.py”,第117行,正在迁移状态= self._migrate_all_forwards(状态,计划,完整计划,fake = fake,fake_initial = fake_initial)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ migrations \ executor.py”,_migrate_all_forwards中的第147行状态= self.apply_migration(状态,迁移,fake = fake,fake_initial = fake_initial)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ migrations \ executor.py”,第245行,位于apply_migration中状态= migration.apply(状态,模式编辑器)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ migrations \ migration.py”,第124行,适用operation.database_forwards(self.app_label,schema_editor,old_state,project_state)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ migrations \ operations \ fields.py”,第112行,在database_forwards中字段,文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ base \ schema.py”,第447行,在add_field中self.execute(sql,params)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ base \ schema.py”,执行中的第137行cursor.execute(sql,params)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”,第99行,在执行中返回super()。execute(sql,params)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”,第67行,执行返回self._execute_with_wrappers(sql,params,many = False,executor = self._execute)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”,第76行,在_execute_with_wrappers中返回执行程序(sql,params,许多,上下文)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”,_execute中的第84行返回self.cursor.execute(sql,params)文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ utils.py”,第89行,位于[[exit

从exc_value文件“ C:\ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ db \ backends \ utils.py”中提高dj_exc_value.with_traceback(traceback),_execute中的第84行返回self.cursor.execute(sql,params)django.db.utils.ProgrammingError:无法适应类型'dict'

看来Hstorefiels仍在影响我的数据库。

我试图清空我在其中存储Hstorefield的模型,然后将其删除,但是什么也没有。我什至从Heroku重置了数据库,但错误不断弹出。

我如何摆脱它?

migrate hstore django-hstore
1个回答
1
投票
在PostgreSQL中设置hstore扩展名。我也遇到了同样的错误,要解决这个问题,请尝试以下方法:

sudo su - postgres //switch to postgres user \c database; //connect your database CREATE EXTENSION IF NOT EXISTS hstore; //create extension

© www.soinside.com 2019 - 2024. All rights reserved.