尝试从 gitpod IDE(ubuntu 服务器)连接到 MySql 数据库时出现套接字异常

Posted

技术标签:

【中文标题】尝试从 gitpod IDE(ubuntu 服务器)连接到 MySql 数据库时出现套接字异常【英文标题】:Socket Exceptions when trying to connect to MySql database from gitpod IDE (ubuntu server) 【发布时间】:2020-05-26 16:30:00 【问题描述】:

我正在使用 gitpod 在线 IDE(浏览器中的 vs 代码,后面有一个 ubuntu linux 服务器)。 我正在努力在其他 linux (CentOS) 服务器上创建与我的 mysql 数据库的连接。我已将 db 服务器上的 Remote MySql 主机设置为 '%' => 'all allowed'。

我正在使用 MySql 连接器包:https://www.nuget.org/packages/MySqlConnector 连接到它。 这就是我的代码的样子:

public async Task<List<User>> GetUsersAsync()

      List<User> readUsers = new List<User>();
      string connection = "server=myserverip;database=db;user=user;password=pwd";
      using (MySqlConnection con = new MySqlConnection(connection))
      
           MySqlCommand cmd = new MySqlCommand("SELECT * FROM admin", con);
           cmd.CommandType = CommandType.Text;
           con.Open();

           MySqlDataReader rdr = cmd.ExecuteReader();
           while(rdr.Read())
           
               User user = new User();
               user.ID = Convert.ToInt32(rdr["ID"]);
               user.Username = rdr["Username"].ToString();
               user.Password = rdr["Password"].ToString();
               readUsers.Add(user);
           
      
      return readUsers;
  

当然,连接字符串有其他值而不是上面显示的(出于安全原因)。 我遇到了以下错误,我只是不知道如何解决它们或问题到底是什么:

我不确定如何继续或现在尝试什么。

【问题讨论】:

【参考方案1】:

从调用堆栈看来,您正在使用 Blazor 将代码编译为 wasm。此代码在浏览器中运行,并受浏览器沙箱的所有限制。更具体地说,浏览器无法打开 TCP 套接字进行网络通信。

更多背景信息是here:

Blazor 在浏览器沙箱中运行,不能做比 javascript 网络智能更多的事情。所以从技术上讲这是不可能的。

还有here:

无法在浏览器中运行的 TCP 网络 API,因为 JavaScript 不公开原始 TCP 网络功能。这自然会导致堆栈中某个较低位置的运行时故障。

这就是您收到PlatformNotSupportedException 的原因。

要解决此问题,您需要重新架构代码,以便 MySQL 连接由运行在 Web 服务器上的代码建立,并且 Blazor 代码发出 HTTP 请求(到 Web API)以调用服务器端代码执行数据库操作。

【讨论】:

以上是关于尝试从 gitpod IDE(ubuntu 服务器)连接到 MySql 数据库时出现套接字异常的主要内容,如果未能解决你的问题,请参考以下文章

EOS系列 - EOSIO WEB IDE

EOS系列 - EOSIO WEB IDE

Keycloak Gitpod Flask OIDC:oauth2client.client.FlowExchangeError:无效响应:301

Arduino IDE 无法上传 Sketch(Ubuntu 18.04 LTS)

QDevelop Qt IDE 在 Ubuntu 10.04 LTS Lucid Lynx qwt

使用 Codelite IDE 和 Ubuntu 执行格式错误