在 localhost 上连接 MySQL 失败

Posted

技术标签:

【中文标题】在 localhost 上连接 MySQL 失败【英文标题】:Failure connecting to MySQL on localhost 【发布时间】:2017-04-23 06:00:36 【问题描述】:

所以我正在尝试向 SQL 数据库添加一条新记录。 mysql 数据库服务器在 XAMPP 上运行,我已将用户名配置为 root,密码配置为 test。我已经尝试将 'localhost' 和 '127.0.0.1' 作为服务器地址,但它们都不起作用。 这是使用:

using System;
using System.Data;
using Gtk;
using MySql.Data;
using MySql.Data.MySqlClient;

单击按钮时,它捕获异常并显示错误消息,但我无法弄清楚与服务器的连接失败的原因。

protected void OnAddItemClicked(object sender, EventArgs e)

    MySqlConnection connection;
    string server = "localhost";
    string database = "shop";
    string uid = "root";
    string password = "test";
    string connectionString;
    connectionString = "SERVER=" + server + ";" + "DATABASE=" +
    database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

    connection = new MySqlConnection(connectionString);

    try
    
        connection.Open();
        if (connection.State == ConnectionState.Open)
        
            MySqlCommand cmd = new MySqlCommand("INSERT INTO items (ItemName,Price,PriceVAT) values(@ItemName,@Price,@PriceVAT", connection);
            cmd.Parameters.Add("@ItemName", nameEntry.Text);
            cmd.Parameters.Add("@Price", priceEntry.Text);
            cmd.Parameters.Add("@PriceVAT", "1");
            cmd.ExecuteNonQuery();

            MessageDialog md = new MessageDialog(null, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, "Data entered successfully.");
            md.Run();
            md.Destroy();
        
        else
        
            MessageDialog md = new MessageDialog(null, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, "Database connection failed.");
            md.Run();
            md.Destroy();
        

    
    catch (Exception ex)
    
        MessageDialog md = new MessageDialog(null, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, "Error occurred, please try again later");
        md.Run();
        md.Destroy();
    

    connection.Close();

【问题讨论】:

有什么异常? displays an error message 那条消息是什么 我不确定,如果我在没有 try-catch 的情况下运行它,那么当我按下按钮时,GUI 就会关闭,没有任何异常。 【参考方案1】:

如果 db 用户和密码正确,则使用您的连接字符串

connectionString  = @"server=" + server  + ";userid=" + uid + ";password="
                       + password + ";database=" + database;

如果你的mysql端口不是3306那样的默认端口,那么你也可以指定你的自定义端口号

connectionString = @"server=" + server + ";port=" + port + ";userid=" + uid  + ";password="
                       + password  + ";database=" + database;

【讨论】:

我已经按照你的建议更改了connectionString,并在XAMPP上检查,端口是3306。仍然不起作用:( 我将“发生错误,请稍后重试”更改为 ex.Message,它只返回 CreateSemaphore,这是异常吗?抱歉,我对 C# 很陌生

以上是关于在 localhost 上连接 MySQL 失败的主要内容,如果未能解决你的问题,请参考以下文章

MySQL连接localhost失败

远程连接云服务器上的mysql失败问题解决

远程连接云服务器上的mysql失败问题解决

Ejabberd 无法连接到“localhost”:3306:错误,“连接失败:连接被拒绝”

PHP当中如何使用Wampserver连接到Mysql数据库以及怎样使用

VB连接MySql出现:方法'`'作用于对象'`'失败