我正在尝试从 MySQL 数据库中导出一些数据并将其导入 PostgreSQL 数据库。两种模型描述如下:
class Location(models.Model):
name = models.CharField(max_length=100)
class Item(models.Model):
title = models.CharField(max_length=200)
location = models.ForeignKey(Location)
class Book(Item):
author = models.CharField(max_length=100)
请注意,Book
模型继承自Item
模型。(另外,我确实意识到这author
确实应该是一个单独的模型 - 但我需要一些简单的东西来演示这个问题。)我首先尝试使用以下dumpdata
命令从模型中导出数据:
./manage.py 转储数据 myapp.location >locations.json ./manage.py 转储数据 myapp.item >items.json ./manage.py 转储数据 myapp.book >books.json
中的 JSONitems.json
如下所示:
{
"fields": {
"title": "Introduction to Programming",
"location": 1
},
"model": "myapp.item",
"pk": 1
}
中的 JSONbooks.json
如下所示:
{
"fields": {
"author": "Smith, Bob"
},
"model": "myapp.book",
"pk": 1
}
我可以毫无问题地导入locations.json
,items.json
但是一旦我尝试导入books.json
,就会遇到以下错误:
IntegrityError:安装夹具“books.json”时出现问题:无法加载 myapp.Book(pk=1):“location_id”列中的空值违反非空值 约束
编辑:(根据 PostgreSQL 本身)的架构myapp.books
如下:
# 选择 * FROM myapp_book; item_ptr_id | 作者 -------------+-------- (0 行)