问题标签 [mysql.data]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySqlException:无法连接到任何指定的 MySQL 主机。MySql.Data.MySqlClient.NativeDriver.Open()
这是连接到 MySql 并尝试查询数据的代码,这些是我得到的错误:
处理请求时发生未处理的异常。MySqlException:超时已过期。在操作完成之前超时时间已过或服务器没有响应。MySql.Data.Common.StreamCreator.GetTcpStream(MySqlConnectionStringBuilder 设置)
MySqlException:无法连接到任何指定的 MySQL 主机。MySql.Data.MySqlClient.NativeDriver.Open()
c# - 具有不变名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序不会注册 MySql.Data.Entity.EF6.dll
过去 2 天我一直在挖掘,但我的应用程序连接到我的数据库时仍然存在问题。该服务已安装并启动,但在尝试执行任务时失败。在这里挖掘这篇文章后,我尝试注册它正在使用的 dll,但我收到一条奇怪的错误消息。如果您需要任何信息,请告诉我。一个正确方向的点会很有帮助。谢谢。
日志:
在我的配置中,我有这个:
我做了什么:
- 确保我已安装并运行 mysql-connector-net-6.9.9
- 确保我可以连接到数据库并且没有任何问题
- 卸载并重新安装mysql
- 从配置中删除了版本号
- 尝试运行 regsvr32 MySql.Data.Entity.EF6.dll -> 这会导致以下错误:
c# - 数据库读取器在读取数据之前关闭
我想使用 MySQL.Data 连接器查询我的 MySQL 数据库。我知道我可以使用实体框架或其他类似于 ORM 的便捷工具,例如 Dapper。但我想尝试“原生”方式。首先,我创建了一个处理查询执行的基础存储库
如您所见,有一个Read
andModify
方法。由于 MySQL 无法返回插入/更新的行(就像 Postgres 那样),我只返回受影响的行数以进行更新和删除。我知道基础存储库还不支持事务,但暂时忽略它。下面的例子演示了用法
问题是当调试器命中await dbDataReader.ReadAsync()
我得到这个异常
MySql.Data.MySqlClient.MySqlException (0x80004005):阅读器关闭时尝试读取无效。
为什么阅读器过早关闭?我该如何解决?
更新
正如评论中已经提到的,原因是await using MySqlConnection mySqlConnection = await GetDatabaseConnection();
在调用方法结束时关闭了连接。
我可以在每个存储库方法中处理整个阅读器逻辑,但我想避免在每个存储库方法中重复自己。
有没有办法可以重新设计BaseRepository
方法,以便它们不会过早关闭连接?
c# - MySqlDataReader.GetStream() 抛出 IndexOutOfRangeException
因此,我将 MySql.Data 包用于我的 .NET Core 项目,并将密码哈希和盐(类型byte[]
)存储varbinary()
到数据库中。从用户那里选择密码哈希和盐时,我需要一种将结果转换回字节数组的方法。鉴于此示例代码
第一行会抛出这个异常
System.IndexOutOfRangeException:数据索引必须是 MySql.Data.MySqlClient.MySqlConnection.Throw(Exception ex) 在 MySql.Data.MySqlClient.Interceptors.ExceptionInterceptor.Throw(Exception exception) 在 MySql.Data.MySqlClient 的字段中的有效索引.MySqlDataReader.Throw(Exception ex) at MySql.Data.MySqlClient.MySqlDataReader.GetBytes(Int32 i, Int64 fieldOffset, Byte[] buffer, Int32 bufferoffset, Int32 length) at System.Data.Common.DbDataReader.GetStream(Int32 ordinal)在 Infrastructure.Persistence.Repositories.UsersRepository.<>c.<b__1_0>d.MoveNext() 在 /.../Infrastructure/Persistence/Repositories/UsersRepository.cs:line 60
尽管阅读器包含正确的数据库结果,如下所示(密码为 32 字节,哈希为 16 字节)
2018年报错
https://bugs.mysql.com/bug.php?id=93374
并具有经过验证的状态。是否有任何好的解决方案/解决方法来解决它?我不想使用该GetBytes
方法,因为它需要我传入字节数组的长度,并且我想保持独立。
c# - EF核心无法创建表,sql语法错误
我是 Entity 框架的新手,我不明白为什么它给我一个 sql 语法错误,我认为使用 EFCore 的全部目的是处理 sql 语法并将所有 sql 查询抽象掉
这是我的模型:
这是我的数据库上下文类
当我添加迁移时,它会成功添加,但是当我使用此命令更新数据库时
它输出此错误:
c# - AutoMapper MapFrom 不能取空值
session_expires_at
我的person
数据库表中有一个列。此列是类型DATETIME
并且可以为空。在我的代码中,我的User
对象用
当使用MySQL.Data包从数据库中读取用户时,我想使用 AutoMapper 将数据库结果映射到User
对象。
因为我知道这个值可能是空的,所以我之前正在运行检查以避免异常。如果该数据为 null,我想将 null 分配给属性,否则为 datetime 值。不幸的是,出现了这个错误
'null' 和 'System.DateTime' 之间没有隐式转换
我玩了一下,该MapFrom
方法无法采用空值。所以如果我这样做
我收到这个错误
无法从用法中推断出类型参数。尝试明确指定类型参数
我也试过这个,但没有帮助
DateTime.Now
如果数据库值为空,我无法采用默认值。必须可以分配一个空值。
如何修复它以便我可以为映射规则中的属性分配空值?如果值为空,也许我可以禁用映射过程,这样它就不会分配一些东西?
c# - MySQL Parameters.AddWithValue 不工作 C#
我一直在尝试编写连接代码以连接数据库。进展顺利,但我遇到了一个我似乎无法解决的奇怪问题。
当我尝试向查询中添加参数时,它不会检索数据。但是当我切换参数时,它确实检索到了正确的数据。
数据访问层如下所示。(我知道这很不安全,但我才刚刚开始):
Select 方法如下所示:
最后是用户模型:
当我尝试从中获取数据时会出现问题。如果我使用带有参数的选择查询,它不起作用,但只要我将参数更改为实际值,它就会很好地检索它。在这一点上,我真的很挠头。我是不是在某个地方忘记了一步?
谢谢!
c# - 无法加载文件或程序集 MySql.Data,在异常中引用了两个文件
搜索 SO 但找不到有效的解决方案。
在 Visual 我有一个主要项目。它使用编译为 DLL 的另一个项目 (ProjectA)。该项目使用 Servicestack ORMLite 4.5.14。我也安装了Mysql.Data 6.9.12
. ProjectA 是 Project 在主项目中的引用,而不是编译的 DLL。
编译后的应用程序被复制到另一台 PC(只需复制,无需安装)并启动。但是,当它尝试使用 ProjectA 访问数据库时,出现以下错误:
我试图解决的问题:
- 编译ProjectA并使用DLL作为参考而不是直接在解决方案中的项目
- 卸载所有引用
Mysql.Data
和 ServiceStack ORMlite 并重新安装它 - 更改了 .Net 框架版本(4.5.2 及更高版本)
- 在应用程序应该运行的机器上安装 Mysql 连接器
- 安装
Mysql.Data 8.0
- 删除
mysql.data.dll
目录中的,以便将其复制回来。检查 DLL 的版本,它匹配 6.9.12 - 在 .csproj 文件中搜索
Mysql.data
8.0 和 6.9.9 但找不到参考
由于它使用的是旧的 Mysql 服务器,因此需要旧版本的 Mysql.Data,因此还需要旧版本的 ServiceStack ORM lite。
我之前遇到过这个问题,ProjectA 也用于需要 Mysql 8.0 的不同项目中。由于它被引用为项目(而不是 DLL 文件),因此它来回更改。但是,过去重新安装Mysql.data
并Service Stack ORM lite
确实解决了问题。但现在我无法克服这个错误。我确保解决方案中所有项目的版本都相同。我知道这是不好的做法,但由于我们正在重写完整的应用程序,直到现在才可行。
有什么建议可以解决这个问题吗?
.net - 在 Azure 应用服务部署槽上安装 MySQL.Data
在 azure app 服务上安装 MySql.Data 的最佳方法是什么?
我们有一个 PHP 应用程序,需要在后台运行一些 powershell 脚本,这些脚本必须连接到 MySQL 数据库(Azure MySql)。当前代码需要“MySql.Data.dll”来执行此操作。这不是我们所拥有的。
Add-Type -Path "D:\home\data\bin\MySQL.Data\v4.5.2\MySql.Data.dll"
这是我们最近继承的一个工具,他们当前的解决方案是在 Windows 机器上安装 MySQL .NET 连接器并上传二进制内容。
个人希望有一种更易于维护的方法。
如果您需要更多信息,请询问。
非常感谢
c# - 在 MySql.Data 8.0.26 上出现 SSL 连接错误
所以我很长一段时间以来一直在使用 NuGet 的 MySql.Data 来连接我在许多不同的 .NET 项目中的 MariaDB 数据库。碰巧现在我正在启动一个新的 .NET5 项目并重新开始,刚刚安装了 MySql.Data 包的最新版本 8.0.26,但是在尝试连接到数据库时出现以下错误:
MySql.Data.MySqlClient.MySqlException HResult=0x80004005 消息=SSL 连接错误。Source=MySql.Data StackTrace:在 MySql.Data.MySqlClient.NativeDriver.Open() 在 MySql.Data.MySqlClient.Driver.Open() 的 MySql.Data.Common.Ssl.StartSSL(Stream& baseStream, Encoding encoding, String connectionString) ) 在 MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder 设置) 在 MySql.Data.MySqlClient.MySqlConnection.Open() 在 MySqlSSLErrorTest.Program.Main(String[] args) 在 C:\Users\Murillo\source\repos \MySqlSSLErrorTest\MySqlSSLErrorTest\Program.cs:第 16 行
此异常最初是在此调用堆栈中引发的: System.Net.Security.SslStream.ReceiveBlobAsync(TIOAdapter) System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task ) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) System.Threading.Tasks.ValueTask.Result.get() System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable.ConfiguredValueTaskAwaiter.GetResult() System.Net.Security .SslStream.ForceAuthenticationAsync(TIOAdapter, bool, byte[], bool)
内部异常 1:AggregateException:发生一个或多个错误。(无法确定帧大小或接收到损坏的帧。)
内部异常 2:IOException:无法确定帧大小或接收到损坏的帧。
现在,正如我一直在搜索的那样,版本 8.0.26 似乎有一些变化,正如MySql 网站上关于这个问题所说的(也许?),但我无法理解究竟是什么我需要对我的连接字符串进行更改以使其工作。
这里我留下一个非常简单的 Console App 示例来重现错误:
我知道我可以将包降级到旧版本以使其正常工作,但我想了解如何解决此问题以便了解最新功能。
谢谢!