我正在将应用程序从 Django 3.2 升级到 4.2,它在生产中使用 postgis,并在运行单元测试时使用
django.contrib.gis.db.backends.spatialite
。
在此应用程序上运行测试,我收到此错误:
django.db.utils.OperationalError: error in trigger ISO_metadata_reference_row_id_value_insert: no such column: rowid
make: *** [django.mk:49: test] Error 1
这个问题记录在这张票中,似乎是使用 Django 4.2 和 Spatialite 5 的问题:https://code.djangoproject.com/ticket/32935
解决方法之一是在 Spatialite 数据库中执行此命令:
./manage.py shell -c "import django;django.db.connection.cursor().execute('SELECT InitSpatialMetaData(1);')";
但是,运行此命令后,我仍然收到
no such column: rowid
错误。还有其他人遇到过这个吗?我在 Fedora Linux 上使用 Django 4.2.11、sqlite 3.42.0、libspatialite 5.0.1、python 3.12.2。
也许这个答案,最初是由spatialite开发者建议的,可以帮助你吗?