ASP.NET MVC应用连接MySQL报错Keyword not supported: 'port'如何解决
问题原因
你使用的SqlConnection类是微软专为SQL Server数据库设计的连接类,无法兼容MySQL数据库的连接字符串格式。SQL Server的连接字符串本身就没有Port这个配置项,所以运行到Open方法时会抛出不支持Port关键字的异常,该问题和你有没有使用EF、DbContext完全无关。
修复步骤
- 第一步:通过NuGet包管理器安装.NET生态下通用的MySQL连接驱动包
MySqlConnector - 第二步:替换代码中所有SQL Server专属的连接、操作类为MySQL对应的实现
- 第三步:代码顶部引入对应命名空间
using MySqlConnector;
修正后的完整代码示例
using MySqlConnector; public static class Database { private const string ConnectionString = "Server=localhost;Port=3306;Database=contoso_inc;Uid=root;Pwd=f6e527xp;"; public static IEnumerable<User> Execute(string query) { using (var connection = new MySqlConnection(ConnectionString)) { var command = new MySqlCommand(query, connection); connection.Open(); var reader = command.ExecuteReader(); var result = new List<User>(); while (reader.Read()) { var user = new User { year = (uint) reader.GetValue(0), month = (string) reader.GetValue(1), users_num = (uint) reader.GetValue(2) }; result.Add(user); } reader.Close(); return result; } } }
额外注意事项
上述示例直接传入自定义query执行存在SQL注入风险,实际生产环境建议使用参数化查询传递查询条件,不要直接拼接SQL字符串。
内容的提问来源于stack exchange,提问作者Oleksandr Novik
相关产品推荐
相关产品推荐

