You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级MSSQL Server至2019后Django应用数据库调用报错求助

解决SQL Server 2019升级后Django应用REGEXP_LIKE找不到的问题

问题原因

SQL Server 2008本身没有内置REGEXP_LIKE函数,你的应用之前能正常运行,应该是在2008实例中自定义了dbo.REGEXP_LIKE函数。升级到2019后,SQL Server内置了REGEXP_LIKE,但它是全局内置函数,不需要加dbo.前缀;同时如果旧的自定义函数没有迁移到新实例,就会触发找不到对象的错误。

解决方案

  • 检查并迁移自定义函数
    登录SQL Server 2019实例,执行以下查询确认是否存在dbo.REGEXP_LIKE:

    SELECT * FROM sys.objects WHERE name = 'REGEXP_LIKE' AND type = 'FN'
    

    如果查询无结果,从SQL Server 2008实例中导出该自定义函数的创建脚本,在2019实例中执行创建。

  • 调整Django查询中的函数调用
    如果你的代码是手动编写的SQL语句,把dbo.REGEXP_LIKE改为REGEXP_LIKE(去掉前缀);如果是使用Django ORM的__regex查询,确保安装的SQL Server后端是最新版(比如django-mssql-backend),它会自动适配SQL Server 2019的内置函数语法。

  • 确认ODBC驱动兼容性
    确保使用的ODBC Driver 17 for SQL Server是最新版本,避免因驱动版本过低导致的语法解析问题。

内容的提问来源于stack exchange,提问作者Mehdi Sheikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 09:10:28