这不是向您的代码抛出的异常,而只是被 Pomelo 捕获的内部异常。
Pomelo 正在通过尝试打开它来测试数据库是否存在。如果不存在,则 MySQL 会抛出异常并被 Pomelo 捕获,然后 Pomelo 将创建数据库。
因此,您的 IDE 设置很可能会中断所有(包括内部)异常。尝试继续运行应用程序,它应该可以正常工作并创建数据库。
【讨论】:
带有 Pomelo EntityFrameworkCore MySql 的 EF Core 6 无法创建数据库答案
EF Core 6 with Pomelo EntityFrameworkCore MySql fails to create database带有 Pomelo EntityFrameworkCore MySql 的 EF Core 6 无法创建数据库我将 EF Core 6 与 Pomelo.EntityFrameworkCore.MySql 和代码一起使用。我的连接字符串中有以下代码。
public sealed partial class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
Database.Migrate();
ChangeTracker.LazyLoadingEnabled = false;
}
当我运行我的应用程序并初始化 MyDbContext 时,我第一次得到 Unknown database 'mydatabase'
数据库不存在,但到目前为止用于创建它的迁移
用户拥有对 mysql 的管理员访问权限,因此这不是用户权限问题。
这是堆栈跟踪
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult()
at MySqlConnector.Core.ResultSet.<ReadResultSetHeaderAsync>d__2.MoveNext() in /_/src/MySqlConnector/Core/ResultSet.cs:line 44
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at MySqlConnector.MySqlDataReader.ActivateResultSet(CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:line 130
at MySqlConnector.MySqlDataReader.<CreateAsync>d__106.MoveNext() in /_/src/MySqlConnector/MySqlDataReader.cs:line 457
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at MySqlConnector.Core.CommandExecutor.<ExecuteReaderAsync>d__0.MoveNext() in /_/src/MySqlConnector/Core/CommandExecutor.cs:line 56
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at MySqlConnector.MySqlCommand.<ExecuteNonQueryAsync>d__78.MoveNext() in /_/src/MySqlConnector/MySqlCommand.cs:line 282
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at MySqlConnector.MySqlCommand.ExecuteNonQuery() in /_/src/MySqlConnector/MySqlCommand.cs:line 101
at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlDatabaseCreator.<>c__DisplayClass18_0.<Exists>b__0(DateTime giveUp)
我的连接字符串是"DbConnection": "server=127.0.0.1;port=3306;database=mydatabase;uid=muusername;pwd=mypassword;"
这里有什么问题?
【问题讨论】:
标签: c# asp.net .net entity-framework-core pomelo-entityframeworkcore-mysql
这不是向您的代码抛出的异常,而只是被 Pomelo 捕获的内部异常。
Pomelo 正在通过尝试打开它来测试数据库是否存在。如果不存在,则 MySQL 会抛出异常并被 Pomelo 捕获,然后 Pomelo 将创建数据库。
因此,您的 IDE 设置很可能会中断所有(包括内部)异常。尝试继续运行应用程序,它应该可以正常工作并创建数据库。
【讨论】: