db2 SQL0601N要创建的对象的名称与“TABLE”类型的现有名称“DJANGO_MIGRATIONS”相同

u4dcyp6a  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(342)

我想让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
    }
}
tag5nh1u

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服务器。如果您的公司拒绝升级,您必须确定您选择的工具集是否合适。

相关问题