我有一个小表,某个字段包含" 字符变化 " 类型.我正在尝试将其更改为" 整数 ",但它给出了一个错误,即无法进行转换.
有没有办法绕过这个或者我应该创建另一个表并使用查询将记录带入其中.
该字段仅包含整数值.
我正在设计一个应用程序,其中用户名将是AutoIntegerField唯一的.
这是我的模特.
class ModelA(models.Model):
username = models.BigAutoField(primary_key=True, db_index=False)
user_id = models.UUIDField(default=uuid.uuid4, unique=True,
editable=False)
Run Code Online (Sandbox Code Playgroud)
最初,我希望user_id是a primary_key,但是我不能创建一个不是的AutoField primary_key.因此,我user_id将以primary_key的形式释放并指定username为主键.
现在,当我运行迁移时,它会抛出错误说,
django.db.utils.ProgrammingError: operator class "varchar_pattern_ops" does not accept data type bigint
Run Code Online (Sandbox Code Playgroud)
完成StackTrace: -
Applying users.0005_auto_20180626_0914...Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: operator class "varchar_pattern_ops" does not accept data type bigint
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", …Run Code Online (Sandbox Code Playgroud) 我正在尝试将项目从Django 1.7更新到1.9.不幸的是UUIDfield,它使用了varchar内部使用的django-extensions .我正在尝试将这些字段更改uuid为数据库中的类型.
我已经创建了一个自定义迁移,告诉Django迁移将使用自己的SQL来完成它.当我这样做时(列被命名guid)我的问题出现了:
alter table tablename alter column guid type uuid using guid::uuid;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
错误:运算符类"varchar_pattern_ops"不接受数据类型uuid
我对PostgreSQL并不熟悉,而且有点过头了.我可以创建一个CAST或其他东西来解决这个问题吗?我无法弄明白我的意思.