我想让django作为另一个用户连接到db2(一个DBADM)而不是db2 inst 1,模式是XXX。但是在运行python manage.py migrate
之后,在创建DJANGO_MIGRATIONS和DJANGO_CONTENT_TYPE表后失败。它们都是空的。返回的错误是[IBM][CLI Driver][DB2/AIX64] SQL0601N The name of the object to be created is identical to the existing name "XXX.DJANGO_MIGRATIONS" of type "TABLE". SQLSTATE=42710
。我试图删除表并再次运行命令,但失败。似乎找不到DJANGO_MIGRATIONS表中插入一条新记录,因此它会尝试再次创建该记录。但是,使用db2 inst 1时,该命令会成功。
所以我想知道这个问题是不是因为用户权限不足造成的?连接用户应该有什么权限/角色?对连接用户有什么限制吗?我试着查找文档,但是没有找到。
版本:Django 3.2、ibm-db-Django 1.5.0.0、ibm-db 3.1.0、DB2 10.5
--在settings.py中添加了数据库配置--
DATABASES = {
'default': {
'ENGINE': 'ibm_db_django',
'CURRENTSCHEMA': 'XXX',
'NAME': 'DBNAME',
'USER': 'myuser',
'PASSWORD': 'password',
'HOST': 'hostname',
'PORT': '50000',
'PCONNECT': True, #Optional property, default is false
}
}
2条答案
按热度按时间tag5nh1u1#
立即错误(SQL 0601 N)是由
settings.py
的DATABASE节中提到的同一USER的python manage.py
的上一次运行(可能失败)引起的。由于编码缺陷,ibm_db_django 1.5.0.0忽略了
settings.py
中的CURRENTSCHEMA,其结果就是您遇到的症状。有关缺陷和代码解决方法的详细信息,请参阅此link。您还将遇到第二个问题(与第一个问题无关),因为您使用的是Db2-LUW v10.5,它不完全支持BOOLEAN数据类型,而在Db2-LUW v11.1中引入了BOOLEAN数据类型,因此请考虑将Db2-LUW服务器升级到V11.1或V11.5(最新的修复包)。
虽然可以通过修改提供的迁移来避免使用BOOLEAN,但该方法的可持续性由您决定。
请记住,IBM于2020年4月30日结束了对v10.5的Db2缺陷支持(没有进一步的修复或增强),因此除非您的公司已经购买了扩展支持,否则您应该升级您的Db2-LUW服务器。如果您的公司拒绝升级,您必须确定您选择的工具集是否合适。
qoefvg9y2#
由于CURRENTSCHEMA和USER不同而返回错误:https://github.com/ibmdb/python-ibmdb-django/issues/68