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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:59:29