gpt4 book ai didi

mysql - 在 Powerhell 中打开 MySQL 连接时如何修复文件 (Renci.SshNet) 找不到错误

转载 作者:行者123 更新时间:2023-11-29 05:48:21 24 4
gpt4 key购买 nike

我尝试在 Windows 10 64 位系统上使用 PowerShell 5.1 连接到远程 MySQL 服务器。我使用 Powershell x86 和 64 位版本。

当我使用 System.Data.Common.DbConnection 的 Open() 方法时,出现一个错误,指出在调用 Open() 方法时找不到名为 Renci.SshNet 的文件。我想知道为什么这里甚至需要 Renci.SshNet.dll,因为我不尝试建立 SSH 连接。

我安装了 MySQL 点网连接器。

我将 MySQL 模块的文件安装到:C:\Program Files (x86)\WindowsPowerShell\Modules\MySQL
MySql.psd1
MySQL.psm1

我导入了MySQL模块

我导入了 MySQL 程序集(不管它到底是什么):结果:GAC版本位置
--- -------- --------
True v4.0.30319 C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\MySql.Data...

我下载了 Renci.SshNet.dll 文件并像在源代码中看到的那样使用它:

[void][Reflection.Assembly]::LoadFrom( (Resolve-Path "$PSScriptRoot\SSH.NET.Fork.2018.8.25.2\lib\netstandard2.0\Renci.SshNet.dll") )  
# Import MySQL Assembly
Import-Module MySQL

[System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")

# Connection string
$strServer = "db.server.test"
$strDB = "mydb"
$strUser = "dbuser"
$strPw = "mypassword"

$cs = "Server=$($strServer);Port=3306;Database=$($strDB);Uid=$($strUser);Pwd=$($strPw);"

$conn = New-Object MySql.Data.MySqlClient.MySqlConnection($cs)
$conn.ConnectionString = $cs
$conn.Open()

预期的结果是连接到 MySQL 数据库,但我总是收到以下错误消息:

Ausnahme beim Aufrufen von "Open"mit 0 Argument(en): "Die Datei oder程序集"Renci.SshNet, Version=2016.1.0.0, Culture=neutral,PublicKeyToken=1cee9f8bde3db106"oder eine Abhängigkeit davon wurde nichtgefunden. Das System kann die angegebene Datei nicht finden。”

使用 0 个参数调用“Open”时出现异常:“The file oder Assembly”Renci.SshNet,Version=2016.1.0.0,Culture=neutral,PublicKeyToken=1cee9f8bde3db106"或找不到依赖项。系统找不到该文件。

最佳答案

似乎不推荐使用 Assembly 反射,这不是主要问题,但仍然如此。

弃用:

[void][system.reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.17\Assemblies\v4.5.2\MySQL.Data.dll")

改用这个:

Add-Type -Path "C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.17\Assemblies\v4.5.2\MySQL.Data.dll"`

主要问题是 Renci.SShNet.dll 文件的版本错误,我不知道从哪里得到。它可以在 MySQL 连接器中的一个文件夹中找到:`Add-Type -Path 'C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.17\Assemblies\v4.5.2\Renci.SshNet.dll'

连接数据库的完整代码为:

Add-Type -Path "C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.17\Assemblies\v4.5.2\MySQL.Data.dll"

# This is essential to solve the missing Renci.SshNet.dll error
Add-Type -Path 'C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.17\Assemblies\v4.5.2\Renci.SshNet.dll'

# Connection string
$strServer = "db.server.test"
$strDB = "mydb"
$strUser = "dbuser"
$strPw = "mypassword"

$cs = "Server=$($strServer);Port=3306;Database=$($strDB);Uid=$($strUser);Pwd=$($strPw);"

$conn = New-Object MySql.Data.MySqlClient.MySqlConnection($cs)
$conn.ConnectionString = $cs
$conn.Open()

关于mysql - 在 Powerhell 中打开 MySQL 连接时如何修复文件 (Renci.SshNet) 找不到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57225431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com