目前,我正在开发一个web应用程序与Python 3.8.10, Django 3.2和IBM_DB_DJANGO 1.5.0.0。
当我尝试从sqlite3迁移到DB2的第一步时,我键入命令:
python manage.py migrate
不幸的是,我得到的错误如下
django.db.utils.ProgrammingError: Statement Execute Failed: [IBM][CLI Driver][DB2/AIX64] SQL0401N The data types of the operands for the operation "IN" are not compatible or comparable. SQLSTATE=42818r SQLCODE=-401
正在创建的表包括:AUTH_GROUP, AUTH_GROUP_PERMISSIONS, AUTH_PERMISSION, django migrations .
只在Django_migration中添加了一条记录。我想知道我怎样才能确认它是否可以使用。
db2level输出' ' ' DB21085I这个实例或安装(实例名,如果适用:"db2inst1")使用"64"SQL10058";带有级别标识符"0609010e"。信息标记是"DB2 v10.5.0.8"、"s160901"、"ip23998"one_answers"Fix Pack"8。产品安装在"/opt/IBM/db2/V10.5"
Pip冻结结果asgiref==3.4.1 colorama==0.4.4 Django==3.2 ibm-db==3.1.0 ibm-db-django==1.5.0.0 pytz==2021.3 regex==2021.10.8 six==1.16.0 sqlparse==0.4.2
提前感谢。
您在问题中报告的症状(SQL0401N when migrate is running 0001_initial.py)是由于在某些迁移中使用BOOLEAN数据类型引起的。
在Db2-LUW 10.5版本中,BOOLEAN还没有完全为应用程序实现,它只在复合sql中可用,但还没有在应用程序中可用。
请注意,Db2-LUW 10.5版本已于2020年4月30日结束对IBM的支持。你应该已经升级了,除非你购买了扩展支持。
您可以通过使用更新的Db2-LUW版本来避免这个问题,例如v11.1或v11.5,这两个版本都在应用程序中正确地支持BOOLEAN。
其他的解决方法可能是可能的(例如调整迁移,或者改变BooleanField的建模方式等),所以你可以在github上的开发者og ibm_db_django上打开一个ticket并询问。