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

Python操作数据库重命名指定表列名报1064语法错误如何解决

问题诱因

SP_RENAME是SQL Server的内置系统存储过程,EXEC也是SQL Server调用存储过程的专属语法,你当前使用的是MariaDB数据库,完全不支持这套语法,所以直接抛出1064 SQL语法错误。跨数据库的DDL语句不能直接混用,必须匹配当前数据库的语法规范。

修改方案

MariaDB/MySQL重命名列需要使用ALTER TABLE语句,分两种兼容场景:

  • 如果你用的是MariaDB 10.5.2及以上、MySQL 8.0及以上版本,直接用RENAME COLUMN语法即可,不需要重复填写列的类型、约束属性:
    ALTER TABLE test_table RENAME COLUMN `Name` TO `First_Name`;
    
  • 如果是更低版本,需要用CHANGE语法,必须完整填写新列的类型、约束属性,和原列定义保持一致即可:
    -- 示例:假设原Name列类型为varchar(20)非空
    ALTER TABLE test_table CHANGE `Name` `First_Name` varchar(20) NOT NULL;
    

修改后的可运行Python代码如下:

def ModifeingColumnName():
    try:
        myconn = mysql.connector.connect(host ="localhost", user = "root", password = "", database = "test")
        mycurs = myconn.cursor()
        # 替换为匹配你数据库版本的ALTER语句
        mycurs.execute('''ALTER TABLE test_table RENAME COLUMN `Name` TO `First_Name`''')
        myconn.commit()
        print('changed successfully!')
        # 操作完成后主动释放连接资源
        mycurs.close()
        myconn.close()
    except Exception as e:
        # 打印具体异常信息,不要直接吞异常方便排查问题
        print(f'failed! 错误详情:{e}')

额外注意:执行该操作的数据库账号需要拥有目标表的ALTER权限,否则会报权限不足错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 08:57:19