开发者社区> 问答> 正文

使用OceanBase数据库作为django的数据库使用pymysql进行连接执行迁移时发送异常?

使用OceanBase数据库作为django的数据库使用pymysql进行连接执行迁移时发送异常 ?
我使用OB作为django的数据库,使用pymysql进行连接,执行迁移时发送异常,执行的sql是js 【 ALTER TABLE `erp_cangku_hc` ADD COLUMN `ck_id_test` integer DEFAULT 1 NOT NULL , ADD CONSTRAINT `erp_cangku_hc_ck_id_b0ed2312_fk_erp_cangku_id_test` FOREIGN KEY (`ck_id_test`) REFERENCES `erp_cangku`(`id`) 】 ,
异常是:【 5031 - Column not found 】
e48ef4328cf2055b9d95915b77065b92.png
该语句在mysql下运行正常,请问这个应该怎么处理?

展开
收起
你鞋带开了~ 2024-02-13 12:47:06 213 0
来自:OceanBase
2 条回答
写回答
取消 提交回答
  • 在 OceanBase 数据库中执行 Django 迁移时遇到 5031 - Column not found 异常,这意味着在尝试执行给定的 SQL 命令时,OceanBase 数据库无法找到要添加外键引用的列 erp_cangku.id

    Django 使用 South 或者自带的迁移框架生成 SQL 脚本来更新数据库结构,这里的迁移试图在 erp_cangku_hc 表中添加一个名为 ck_id_test 的列,并将其设置为外键,引用 erp_cangku 表中的 id 列。

    错误信息表明,在执行迁移时,OceanBase 数据库发现 erp_cangku 表中并没有名为 id_test 的列,而是期望找到了 id 列。因此,请检查以下几点:

    1. 外键引用的列名是否正确:上述 SQL 中的外键引用列名是 id_test,但描述中提到的是 erp_cangku 表中的 id 列。请确认 erp_cangku 表中是否存在名为 id 的列,如果是,则需要修改迁移脚本,使其引用正确的列名。

    2. OceanBase 特殊限制:虽然 MySQL 兼容性很高,但在某些情况下,OceanBase 可能有不同的语法或限制。确保您使用的外键约束格式符合 OceanBase 的规定。

    3. 表结构同步:确认两个表都存在于同一数据库且结构同步。即先确保 erp_cangku 表已经创建并包含所需的 id 列。

    4. 迁移顺序:如果有多个迁移文件,确保之前定义 id 列的迁移已经被成功执行。

    5. 模型验证:回到 Django 应用的模型定义,核实 erp_cangku_hc 模型中的外键字段指向 erp_cangkuid 字段是否正确无误。

    2024-02-13 14:12:53
    赞同 1 展开评论 打赏
  • 在ob上确认下目标表或者列 是否存在。
    --此回答整理自钉群“[社区]技术答疑群OceanBase”

    2024-02-13 13:09:47
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
蚂蚁OceanBase数据库团队,用于OceanBase技术原理、运维经验和案例分享、对外交流。
问答排行榜
最热
最新

相关电子书

更多
开源HTAP OceanBase产品揭秘 立即下载
云数据库OceanBase 架构演进及在金融核心系统中的实践 立即下载
自研金融数据库OceanBase的创新之路 立即下载