在 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 失败的主要内容,如果未能解决你的问题,请参考以下文章
Ejabberd 无法连接到“localhost”:3306:错误,“连接失败:连接被拒绝”