从流中读取失败 - MySqlException

Posted

技术标签:

【中文标题】从流中读取失败 - MySqlException【英文标题】:Reading from the stream has failed - MySqlException 【发布时间】:2014-12-26 11:37:36 【问题描述】:

我正在尝试使用以下代码片段打开与 mysql 数据库的连接:

string connectionString = "Server=ip_number;Database=database_name;Uid=uid;Password=password";
MySqlConnection connection;
connection = new MySqlConnection(connectionString);
connection.Open();

这是我得到的例外:

我正在使用最新的 mysql 连接器 (downloaded from here)。我错过了什么?

提前致谢,

【问题讨论】:

您是否检查过连接字符串是否有效?在您的代码中,您有 database_name、uid 和密码。您是否省略了实际值,这些是访问数据库所需的值吗? 是的,它们是实际值。我可以使用连接字符串中的值通过 phpMyAdmin 连接到 db。出于安全原因,我更换了它们。 我也有同样的问题。更模糊的是,我的应用程序运行了几个月没有任何问题。没有改变任何东西,几天前它开始给我这个错误,从那以后就一直这样...... 我的案例是关于网络权限的。尝试通过 telnet 连接到您的数据库 ip 和端口后与您的网络管理员交谈。 【参考方案1】:

解决方案 1:如果不需要 SSL。由于是 SSL 引起的,我们可以通过在连接字符串后附加“SslMode=None”来关闭 SSL。

解决方案 2:如果需要 SSL,则服务器身份很重要,需要进行验证。服务器需要互联网连接来进行证书验证。请注意,加密 API 不会为每个进程更新 CTL。 CTL 在操作系统级别维护。一旦您将服务器连接到互联网并与服务器建立 SSL 数据库连接,CTL 将自动更新。然后您可以断开互联网连接。再次注意 CTL 有其到期日期,之后 Windows 需要再次更新它。这可能会在几个月后发生。

解决方案 3:如果需要 SSL,但服务器身份并不重要。在这种情况下,通常 SSL 仅用于加密网络传输。我们可以关闭 CTL 更新:

按 Win+R 打开“运行”对话框键入“gpedit.msc”(不带 引号)并按 Enter 在“本地组策略编辑器”中,展开 “计算机配置”,展开“管理模板”,展开 “系统”,展开“网络通讯管理”,然后点击 “互联网通信设置”。在详细信息面板中,双击 “关闭自动根证书更新”,点击启用, 然后单击确定。此更改将立即生效,无需 重新启动。

https://blog.csdn.net/fancyf/article/details/78295964清晰地解释了根本原因和解决方案。

【讨论】:

我问了***.com/q/58237785/11035837 的问题,与您的回答和刷新后我的错误的奇怪行为有关。 非常感谢!你的回答拯救了我的一天!【参考方案2】:

你可以试试这个:

连接到服务器:

string connectionString= "datasource=localhost;port=3306;username=uid;password=1234"

使用“MySqL-Methodes”来插入/更新/选择...例如:

    public string pathselectDB = "select *from try.data;";
    public string pathinsertDB = "INSERT INTO `try`.`data`";

        string constrnig = pathtoDB;
        string Query = pathinsertDB +"(`value1`, `value2`) values('"2"','3',');";



        MySqlConnection conDataBase = new MySqlConnection(constrnig);
        MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
        MySqlDataReader myReader;

这只是一个例子......我希望这能解决你的问题。

您可以在 MySql-Editor 中设置您的用户名和密码!如果您需要帮助,只需在此下方设置一个推荐即可。

【讨论】:

这个答案并没有告诉我我做错了什么。我尝试将端口添加到连接字符串,但没有任何变化。 我认为您的连接字符串是问题所在。您可以像我给出的答案一样尝试一下。你已经有了一个 MySql-Database 不是吗?你安装了 MySql-Editor 吗?有很多选项可以将程序与数据库连接起来。在以下链接中,您可以查看 Sql-Database 的所有方法:link

以上是关于从流中读取失败 - MySqlException的主要内容,如果未能解决你的问题,请参考以下文章

连续从流中读取?

iOS - 如何从流中读取音频并播放音频

NAudio在改变音高而不是文件时寻找一种从流中读取的方法

用于从流中读取多个 protobuf 消息的 python 示例

如何从流中读取 CSV 文件并在写入时处理每一行?

3hutool实战:IoUtil 流操作工具类(从流中读取内容)