python - 在 Django 2.0 中从 SQLite 迁移到 Postgresql 时 UUID 的一些问题
问题描述
我正在尝试按照此处描述的步骤将我的 Django 2.0.4 项目从 SQLite 迁移到 PostgreSQL 10 ,但我遇到了不同的问题。在项目期间,我将一些 Integer 字段更改为 UUID4 字段。我设法运行python manage.py migrate --run-syncdb
手动编辑auto_increment迁移文件进行这种类型的更改(请参阅 id 字段):从
class Migration(migrations.Migration):
dependencies = [
('dumps', '0011_auto_20180608_1714'),
]
operations = [
migrations.CreateModel(
name='Report',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('data', models.DateTimeField(auto_now_add=True, verbose_name='Date')),
],
),
...
...
...
至
class Migration(migrations.Migration):
dependencies = [
('dumps', '0011_auto_20180608_1714'),
]
operations = [
migrations.CreateModel(
name='Report',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, verbose_name='ID')),
('data', models.DateTimeField(auto_now_add=True, verbose_name='Date')),
],
),
...
...
...
接下来,我注释了所有在 uuid 字段上有 AlterTable 的 auto_increment 文件,但是当我运行时,我收到python manage.py loaddata datadump.json
以下错误:
django.db.utils.ProgrammingError: Problem installing fixture 'C:\Users\djangoproject\datadump.json': Could not load myApp.Reservation(pk=10d00b08-bf35-469f-b53f-ec28f8b6ecb3): ERROR: column "reservation_id" is integer type but the expression is uuid type
LINE 1: UPDATE "myApp_reservation" SET "reservation_id" = '066cff3c-4b...
解决方案
我认为这里的问题是您有旧的迁移,int
在AutoField()
您更改为使用UUIDField()
.
您可能需要保持该id
字段原样(也许将您的迁移反向到进行 swithc 的点),并在您的模型中包含一个名为的新字段(以及 type 列uuid
) :uuid
Report
class Report(models.Model)
id = models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')
uuid = models.UUIDField(default=uuid.uuid4, editable=False, serialize=False, verbose_name='UUID')
data = models.DateTimeField(auto_now_add=True, verbose_name='Date')
...
然后重新运行数据库迁移......您可能会遇到更多迁移错误,但请大声告诉我,我可以在聊天中建议从那里去哪里。
推荐阅读
- selenium - selenium c#等待使用元素名称而不是定位器(By.Id)
- python - 如何对数组进行批量计算
- reactjs - 打开一个
通过单击在另一个组件中呈现的元素 - asp.net-core - .NET Core 2.1 MVC 身份授权 - 不同部分的不同用户角色
- javascript - 从数据库中设置重复字段的值
- python - Python - 熊猫直方图宽度
- javascript - 如何在 TSX 中将值从子组件传递给父组件?
- python - Pyqt gui,带有放置在背景图像上的按钮和数字指示器
- python - git clone 的 Python 进度条
- tfs - TFS 自动构建:Nuget Pack 失败并显示代码 (1)