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

C# .Net连接MySQL报错‘unknown system variable lower_case_table_names’求助

问题分析与解决方案

核心原因

出现unknown system variable lower_case_table_names错误的本质是MySQL Connector/NET 8.1.0与MySQL 5.0.5 Community版本兼容性不匹配。MySQL 5.0.5是非常老旧的版本,而Connector/NET 8.1.0是为MySQL 8.0及以上版本开发的,它会尝试读取MySQL 5.0.5中不存在的系统变量lower_case_table_names,从而触发报错。

VS服务器资源管理器能正常连接,是因为它依赖的MySql for Visual Studio 2.0.5对旧版MySQL的兼容性更好,和代码中使用的Connector/NET不是同一组件。

解决方案

1. 降级MySQL Connector/NET版本

安装与MySQL 5.0.5匹配的Connector/NET版本,推荐使用MySQL Connector/NET 6.4.6(官方支持MySQL 5.0的最后几个稳定版本之一):

  • 卸载当前的MySQL Connector 8.1.0
  • 下载对应版本并安装,确保版本与.NET Framework 4.7.2兼容

2. 调整连接字符串

在连接字符串中添加Allow User Variables=True参数,避免驱动尝试读取不兼容的系统变量:

connectionString = "SERVER=" + server + ";" + "DATABASE=" +
database + "; " + "UID=" + uid + ";" + "PASSWORD=" + password + ";Allow User Variables=True;";

3. 确认my.ini配置生效

修改lower_case_table_names后,需确保MySQL服务重启后配置生效:

  • 打开命令提示符,执行mysql -u root -p登录数据库
  • 执行SHOW VARIABLES LIKE 'lower_case_table_names';查看当前值
  • 若未生效,检查my.ini位置是否正确(XAMPP的my.ini通常在xampp/mysql/bin目录下),修改后重启MySQL服务

测试代码优化建议

简化代码,用using语句自动释放连接资源,避免重复创建实例:

private void button1_Click(object sender, EventArgs e)
{
    string server = "127.0.0.1";
    string database = "database";
    string uid = "root";
    string password = "root";
    string connectionString = $"SERVER={server};DATABASE={database};UID={uid};PASSWORD={password};Allow User Variables=True;";

    using (MySqlConnection cnn = new MySqlConnection(connectionString))
    {
        try
        {
            cnn.Open();
            MessageBox.Show("Connection Open ! ");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:20:18