C#连接MySQL时触发ArgumentException:Option not supported. (Parameter 'url') 问题求助
C#连接MySQL时触发ArgumentException:Option not supported. (Parameter 'url') 问题求助
看起来你遇到的问题根源很明确——你用错了MySQL连接字符串的格式,把SQLite的连接写法套到MySQL上了,这才导致了Option not supported. (Parameter 'url')这个异常。
先给你理清核心问题:
- MySQL是客户端-服务器架构的数据库,你需要先连接到运行中的MySQL服务(比如本地的localhost),而不是像SQLite那样直接指定本地文件路径。
- 你写的
URL=file:MySQLDB完全不符合MySQL连接字符串的规范,MySQL不认识这个url参数,自然会抛出异常。
接下来给你修改方案:
第一步:修正连接字符串
把你的FilePath改成标准的MySQL连接格式,需要包含服务器地址、用户名、密码(根据你的MySQL配置填写):
public static string FilePath = "server=localhost;user id=root;password=你的MySQL密码;";
如果你的MySQL服务不是默认端口(3306),还要加上port=你的端口号;。
第二步:调整初始化数据库的逻辑
因为我们是先连接到MySQL服务器,再创建数据库,你的代码逻辑基本没问题,但可以优化一下(比如创建数据库后,后续操作可以直接连接到目标数据库):
using MySql.Data.MySqlClient; namespace DatabaseTest { internal class fileHandlerV2 { // 基础连接字符串(连接到MySQL服务器,不指定具体数据库) private static string BaseConnStr = "server=localhost;user id=root;password=你的MySQL密码;"; // 连接到store数据库的字符串(创建后使用) public static string StoreConnStr = "server=localhost;user id=root;password=你的MySQL密码;database=store;"; public static void InitialiseDB() { using (var conn = new MySqlConnection(BaseConnStr)) using (var cmd = conn.CreateCommand()) { conn.Open(); // 创建数据库 cmd.CommandText = "CREATE DATABASE IF NOT EXISTS `store`;"; cmd.ExecuteNonQuery(); } } public static void CreateTable(string cmdToExecute) { // 直接连接到store数据库 using (var conn = new MySqlConnection(StoreConnStr)) using (var cmd = conn.CreateCommand()) { conn.Open(); cmd.CommandText = cmdToExecute; cmd.ExecuteNonQuery(); } } } }
第三步:调用逻辑保持不变
fileHandlerV2.InitialiseDB(); fileHandlerV2.CreateTable("create table if not exists Customers (" + "customerID INT UNSIGNED NOT NULL AUTO_INCREMENT, " + "firstName varchar(255) not null, " + "lastName varchar(255) not null, " + "address varchar(255) not null, " + "phoneNum varchar(50) not null, " + "accountBalance double unsigned not null, " + "primary key(customerID));");
额外注意事项
- 确保你的MySQL服务正在运行(可以在系统服务列表里查看MySQL服务状态)
- 替换代码中的用户名和密码为你自己的MySQL账号信息
- 你之前卸载重装MySQL没用,因为问题根本不在MySQL本身,而是代码里的连接字符串格式错误
这样调整后,应该就能正常创建数据库和表了,试试吧!
备注:内容来源于stack exchange,提问作者HorrorStarGames
相关产品推荐
相关产品推荐

