NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #238 most downloaded on NuGet
A truly async MySQL ADO.NET provider, supporting MySQL Server, MariaDB, Amazon Aurora, Azure Database for MySQL, Google Cloud SQL, and more.
Last release 1 months ago
11 Aug 2026
Release timing varies
gaps range from 3 weeks to 12 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
106 versions withdrawn
withdrawn after publishing
127 years old
265 releases · first in 1900
Add SkipCertificateRevocationCheck connection string option: #1615 .
SkipCertificateRevocationCheck connection string option: #1615.Add SkipCertificateRevocationCheck connection string option: #1615
Thanks to Bart Koelman for contributions to this release.
Fix GHSA-473q-m89c-ghf8 : MitM password disclosure in zero-configuration TLS mode.
MySqlCommand.Prepare with INSERT INTO ... RETURNING: #1652.One column per quarter.
Fix GHSA-473q-m89c-ghf8 : MitM password disclosure in zero-configuration TLS mode.
Fix MySqlCommand.Prepare with INSERT INTO ... RETURNING : #1652 .
Thanks to Diego Dupin for contributions to this release.
Add opt-in stable OpenTelemetry semantic conventions: #1435 .
OTEL_SEMCONV_STABILITY_OPT_IN to database or database/dup (or use WithSemanticConventionsKinds) to test the new semantic conventions.traceparent to MySQL Server: #1635.EnableResultSetHeaderEvent is now opt-in: #1633.AddMySqlDataSource and related APIs from MySqlConnector.DependencyInjection to MySqlConnector: #1649.Possibly breaking MySqlConnection.State will be set to ConnectionState.Broken when there is a network error: #1599 .
MySqlConnection.State will be set to ConnectionState.Broken when there is a network error: #1599.
ConnectionState.Closed but the connection wasn't truly closed.MySqlConnection.Close() to fully close the connection before calling Open() again..Dispose() (ideally with a using declaration) and create a new MySqlConnection instance to recover from failure.MySqlConnection.ResetConnectionAsync will consistently throw a MySqlException: #1602.PARSEC authentication: #1540, #1606.VECTOR data type: #1549.COM_STMT_SEND_LONG_DATA to stream large parameter values: #943.MySqlConnectorTracingOptions and builder APIs to configure tracing output: #1524.Guid values from stored procedure out parameters: #1528.MySqlDbType with [DbProviderSpecificTypeProperty(true)]: #1557.mysql.proc: #1547.MySqlBulkCopy auto-detected column mappings: #1568.Foreign Keys schema SQL syntax: #1601.caching_sha2_password: #1562.System.Threading.Lock for .NET 9.0+.PemEncoding in .NET 5.0+ and UTF-8 methods in .NET 10.0+.Possibly breaking Mark MySqlConnectorLogManager.Provider as [Obsolete] : #1397 .
MySqlConnectorLogManager.Provider as [Obsolete]: #1397.DbDataSource need to target .NET 8.0 or later.MySqlDataSourceBuilder.UseConnectionOpenedCallback: #1508.MySqlDbColumn.TableName: #1521.SET data type in functions: #1491.TABLESPACES schema: #1477.SET NAMES commands when not necessary: #1497.NullReferenceException in MySqlConnection.Cancel: #1506.InvalidOperationException in FinishQuerying: #1341.MySqlDataSourceBuilder.UseConnectionOpenedCallback: #1508.SET data type in functions: #1491.SET NAMES commands when not necessary: #1497.NullReferenceException in MySqlConnection.Cancel: #1506.TABLESPACES schema: #1477.Fix NullReferenceException in MySqlDataReader.ActivateResultSet and MySqlDataReader.DisposeAsync : #1459 .
Fix NullReferenceException in MySqlDataReader.ActivateResultSet and MySqlDataReader.DisposeAsync : #1459 .
This bug likely also caused “Packet received out-of-order” errors.
This was introduced in 2.3.0.
Fix rare NullReferenceException in ServerSession during cancellation: #1472 .
Fix Foreign Keys schema not being generated asynchronously.
Fix VerifyCA incompatibility with AWS Aurora: #1462 .
Fix VerifyCA incompatibility with AWS Aurora: #1462 .
Verify that the server’s root certificate is present (in the list of provided CA certificates) when using the SslCa connection string option and SslMode is VerifyCA or VerifyFull .
Optimization: Use pipelining to begin a transaction: #1286 .
Use Pipelining = False; in your connection string to disable this optimization if there are compatibility issues.
Optimization: cache START TRANSACTION payloads.
Add transaction logging: #1411 .
Fix incompatibility with MySQL Server 5.1: #1445 .
This fixes a regression introduced in 2.3.0.
DLL files within the NuGet packages are now digitally signed.
DLL files within the NuGet packages are now digitally signed.
Thanks to Devolutions for sponsoring this change.
Unify Application Name connection string option and MySqlDataSourceBuilder.UseName : #1434 .
Unify Application Name connection string option and MySqlDataSourceBuilder.UseName : #1434 .
Remove TLS version fallback code: #1409 .
Fix ArgumentOutOfRangeException in TimerQueue.Add : #1424 .
Fix InvalidCastException when using stored procedures with MySQL 5.0: #1431 .
Fix hang when disposing MySqlDataSource twice on .NET Framework.
Thanks to Yong Yao for contributions to this release.
Support COLUMN_NAME restriction for IndexColumns schema; this improves NHibernate compatibility.
Add Foreign Keys , Indexes , Index Columns schemas: #1419 .
Add Foreign Keys , Indexes , Index Columns schemas: #1419 .
Fix exception when server doesn’t send expected metadata: #1398 .
Clear activity tags when retrying TLS: #1405 .
Use underlying enum type when writing binary parameters: #1421 .
Avoid retrying TLS negotiation when a non-recoverable exception occurs.
Thanks to Alisha Kim , Evgeni Alesinskyy , and Jan Trejbal for contributions to this release.
Add db.client.connections.timeouts counter to metrics: #1392
Add db.client.connections.timeouts counter to metrics: #1392
Allow empty schemaRestrictions array to be passed to GetSchema : #1394
Use higher-resolution timestamps for duration metrics: #1395 .
Possibly Breaking Use seconds as the units for duration metrics; change type to double : #1396 .
Thanks to Tuomas Hietanen for contributions to this release.
Add AddKeyedMySqlDataSource to support keyed services: #1391 .
Update Microsoft.Extensions.DependencyInjection.Abstractions dependency to 8.0.0.
MySqlConnectorLogManager.Provider can still be used to add a logging destination, but it is now deprecated.
Support .NET 8.0.
Mark some serialization APIs as [Obsolete] .
Implement DbBatchCommand.CreateParameter : #1352 .
Optimizations: Use IUtf8SpanFormattable , Ascii.FromUtf16 , Guid(bigEndian: true) constructor, argument-throwing helpers, etc.
Support .NET Framework 4.8 ( net48 ) TFM: #1355
This allows TlsVersion = TLSv1.3 to be used on .NET Framework 4.8.
Drop support for .NET 4.6.1 and .NET Core 3.1: #636 , #1273 .
.NET 4.6.1 support ended on 26 April 2022, and .NET Core 3.1 on 13 December 2022.
The minimum supported versions are now .NET Framework 4.6.2 and .NET 6.0, although other frameworks should be supported via netstandard2.0 .
MySqlDataSource is now available for all TFMs, not just .NET 7.0: #1269 .
This provides a single place to configure a MySQL connection and makes it easier to register MySqlConnection with dependency injection.
Add MySqlDataSourceBuilder class to configure MySqlDataSource instances.
Add MySqlDataSource.Name and MySqlDataSourceBuilder.UseName .
Microsoft.Extensions.Logging is now used as the core logging abstraction: #1110 .
MySqlConnectorLogManager.Provider can still be used to add a logging destination, but it is now deprecated.
Use MySqlDataSourceBuilder.UseLoggerFactory to configure logging.
Add new MySqlConnector.DependencyInjection package: #1271 .
MySqlDataSource and MySqlConnection can be registered with dependency injection by using builder.Services.AddMySqlDataSource(connectionString) .
This also configures logging automatically.
Expose connection pool metrics: #491 .
Remove COM_MULTI protocol support: #946 .
Support ZEROFILL columns in MySqlDecimal : #1354 .
Support higher-precision DateTime values: #1379 .
Use ValueTask in MySqlBulkCopy API for all TFMs: #1364 .
Breaking This changes the return type of WriteToServerAsync from Task<MySqlBulkCopyResult> to ValueTask<MySqlBulkCopyResult> on .NET Framework
Support skipping metadata for prepared statements with MariaDB 10.6 and later: #1301 .
Support multiple authentication methods when connecting: #1303 .
Support per-query variables for CommandBehavior.SchemaOnly and SingleRow : #1312 .
Recycle MySqlDataReader objects: #1277 .
Perform XA rollback when preparing a transaction fails: #1348 .
Implement faster parsing for result sets with multiple rows: #1330 .
Optimize parameter encoding for ASCII strings: #1296 .
Use TcpClient.ConnectAsync overload with CancellationToken on .NET 5.0 and later: #1291 .
Fix cancellation when using a redirected connection: #1305 .
Fix MySqlConnection.CloneWith for connections created from a MySqlDataSource : #1306 .
Work around ephemeral PEM bug on Windows: #1278 .
Reduce allocations on common code paths.
Fix bug when column name begins with @ in MySqlBulkCopy : #1365 .
Ignore MySqlDbType when serializing enum values: #1384 .
Fix bug that didn’t copy MySqlDataSource in MySqlConnection.Clone : #1267 .
Fix version parsing for MariaDB 11.0 and later: #1311 .
Fix potential error in reallocating an internal buffer when writing ASCII text.
Update handling of ActivityStatus to latest conventions: #1334 .
Reduce overhead of CommandTimeout : #1338 .
Reword end-of-stream message to be more generic: #1383 .
Thanks to Guillaume Boucher , JackBOBO , Piotr Kiełkowicz , Diego Dupin , and Nickolay Batov for contributions to this release.
Respect ConnectTimeout when resetting connection: #1321 .
Respect ConnectTimeout when resetting connection: #1321 .
Prevent connection pool falling back to an unsupported TLS version: #1349 .
Ignore deadlock exception when rolling back an XA transaction: #1317 .
Ignore deadlock exception when rolling back an XA transaction: #1317 .
Work around ephemeral PEM bug on Windows: #1278 .
Support new MariaDB version numbers: #1259 .
Thanks to Diego Dupin for contributions to this release.
Add support for DECIMAL UNSIGNED , fixing error in DeriveParameters : #1272 .
Add support for DECIMAL UNSIGNED , fixing error in DeriveParameters : #1272 .
Fix parsing nan as float/double value on .NET Framework.
Fix a race condition in recovering leaked sessions: #1263 .
Avoid renormalizing parameter names when executing a prepared command: #1252 .
Avoid renormalizing parameter names when executing a prepared command: #1252 .
Fix “Unknown column SRS_ID” error in GetSchema : #1258 .
Use a standardized value for the TableName property of the DataTable returned from GetSchema .
Minor performance improvements.
Remove FormatInvariant internal helper method: #1253 .
Eliminate temporary byte array when getting real server version.
Thanks to Yoshifumi Kawai for contributions to this release.
Fix memory leak when initializing a TLS connection: #1247 .
Fix memory leak when initializing a TLS connection: #1247 .
Fix failure to dispose objects if an exception is thrown when connecting: #1248 .
Fix failure to load client SSL private key files: #1242 .
Add MySqlDataSource , an implementation of DbDataSource for MySQL: #1208 .
Support .NET 7.0.
Add MySqlDataSource , an implementation of DbDataSource for MySQL: #1208 .
Use source-generated regular expressions.
Use UTF-8 literals to perform UTF-8 conversion at compile-time instead of runtime.
Breaking Drop support for .NET 4.5: #1209 .
Add DNS Check Interval connection string option: #1201 .
Support restrictions in MySqlConnection.GetSchema .
Schema collections are code-generated: #1190 .
Use user-provided callbacks when opening new connection to KILL QUERY : #1179 .
Set activity tags when opening a connection fails: #1196 .
Raise Component.Disposed event from MySqlConnection.DisposeAsync : #1235 .
Use ValueTask instead of ValueTask<int> : #1233 .
Breaking This changes the return type of MySqlConnection.ResetConnectionAsync for netstandard2.0 , net461 , net471 .
Possibly Breaking Normalize the order of keys in the connection string returned by MySqlConnectionStringBuilder.ConnectionString : #1217 .
Possibly Breaking Update dependencies.
Update System.Diagnostics.DiagnosticSource to 6.0.0.
Update System.Memory to 4.5.5.
Update System.Threading.Tasks.Extensions to 4.5.4: #1144 .
Swallow (but log) exceptions in MySqlDataReader.Dispose(Async) : #1154 .
Swallow (but log) exceptions in MySqlDataReader.Dispose(Async) : #1154 .
Add MySqlDataReader.GetBytes(string) : #1197 .
Eliminate allocation in OnStatementBegin : #1207 .
Thanks to Corentin Pitrel and Jason Nelson for contributions to this release.
Support new character sets added in MySQL Server 8.0.30 .
Fix NullReferenceException in MySqlConnector.Utilities.TimerQueue.Callback : #1177 .
Fix NullReferenceException in MySqlConnector.Utilities.TimerQueue.Callback : #1177 .
Support floating point infinity: #1185 .
Thanks to Maico Dionisio for contributions to this release.
Add MySqlBulkCopy.ConflictOption setting: #1176 .
Add MySqlBulkCopy.ConflictOption setting: #1176 .
Thanks to Mykola Klymyuk for contributions to this release.
Set Activity status to ERROR if an exception occurs during ExecuteReader : #1171 .
Set Activity status to ERROR if an exception occurs during ExecuteReader : #1171 .
SSL Mode = Disabled is supported as a synonym for SSL Mode = None : #1168 .
Added MySqlSslMode.Disabled enum value.
MySqlAttribute implements ICloneable : #1169 .
(Internal) Unix domain socket connection uses UnixDomainSocketEndPoint class: #1160 .
Thanks to qq362220083 for contributions to this release.
Fix bug that reset MySqlCommand.LastInsertedId to -1 between commands: #1147 .
Fix bug that reset MySqlCommand.LastInsertedId to -1 between commands: #1147 .
Fix bug using MySqlBulkCopy with DateOnly and TimeOnly : #1146 .
MySqlCommand no longer automatically appends a semicolon to the user-provided CommandText : #1133 .
MySqlCommand no longer automatically appends a semicolon to the user-provided CommandText : #1133 .
This improves compatibility with Sphinx Search (SphinxQL).
MySqlBulkCopy supports MySqlDecimal , BigInteger , DateOnly , TimeOnly : #1143 .
Fix InvalidOperationException when the TLS Version connection string option contains multiple values: #1138 .
Fix unintentional TLS downgrade: #1132 .
Fix unintentional TLS downgrade: #1132 .
To ensure the desired TLS version is used, set TlsVersion in your connection string.
Fix deadlock when cancelling a command: #1131 .
Fix ArgumentException when calling GetSchema("Parameters") against MySQL 8.0: #1128 .
Set MySqlParameter.Size in DeriveParameters : #1125 .
Thanks to Andrew Nagel and Viktor Svyatokha for contributions to this release.
Speed up MySqlDataAdapter.Update when UpdateBatchSize is large: #1124 .
Speed up MySqlDataAdapter.Update when UpdateBatchSize is large: #1124 .
Remove DO SLEEP(0) use after cancelling a query: #1115 .
This improves compatibility with MariaDB Xpand.
Encode NUL bytes as \0 on the wire: #1121 .
This improves compatibility with SingleStore.
Fix InvalidOperationException if MySqlDataReader.RecordsAffected was read after calling Close() or Dispose() : #1122 .
This tag was signed with the committer’s verified signature .
This tag was signed with the committer’s verified signature .
bgrainger Bradley Grainger
GPG key ID: 92C067450846E3F7
Verified Learn about vigilant mode .
cf045e8
This commit was signed with the committer’s verified signature .
bgrainger Bradley Grainger
GPG key ID: 92C067450846E3F7
Verified Learn about vigilant mode .
Fix Use Compression = True when running under .NET 6.0: #1120 .
Fix calculation of affected rows (the return value of ExecuteNonQuery ) for compound statements: #1096 .
Use a better FormatException message when a GUID can't be read: #1114 .
Use cryptographic one-shot operations on .NET 5.0 and later.
Performance: Use SkipLocalsInit where possible.
Fix Use Compression = True when running under .NET 6.0: #1120 .
Fix calculation of affected rows (the return value of ExecuteNonQuery ) for compound statements: #1096 .
Breaking For a stored procedure, the return value of ExecuteNonQuery will be the number of rows affected by the last statement in the procedure, or zero if the last statement was a SELECT .
Use a better FormatException message when a GUID can’t be read: #1114 .
Use cryptographic one-shot operations on .NET 5.0 and later.
Performance: Use SkipLocalsInit where possible.
Fix incorrect results when using prepared commands with MySQL Server 8.0.23–8.0.25: #1106 .
Fix incorrect results when using prepared commands with MySQL Server 8.0.23–8.0.25: #1106 .
Those server versions advertise support for query attributes, but do not fully support them for prepared statements.
The server-side bug is triggered by the client-side support for query attributes added in MySqlConnector 2.1.0.
Fix InvalidOperationException when OpenAsync is called again after being canceled: #1097 .
Fix InvalidOperationException when OpenAsync is called again after being canceled: #1097 .
Allow OpenAsync to be canceled earlier.
Opening a connection from the pool is now twice as fast: #1089 .
Opening a connection from the pool is now twice as fast: #1089 .
This may fail with Amazon Aurora RDS; to explicitly disable this, set Pipelining = False; in the connection string.
Add support for query attributes : #930 .
This requires MySQL Server 8.0.23 (or later) for regular commands, and MySQL Server 8.0.26 (or later) for prepared commands.
Add attributes to the MySqlCommand.Attributes collection to send them to the server when the command is executed.
Add MySqlDecimal support: #1070 .
Improve MySqlDataReader.GetX exceptions for NULL values: #1092 .
Improve detection of Azure Database for MySQL proxies: #1093 .
Update Microsoft.SourceLink.GitHub.
Thanks to Ed Ball and Sumit Kumar for contributions to this release.
Logger names are now prefixed with MySqlConnector. by default: #1080 .
To return to the previous behavior, use MicrosoftExtensionsLoggingLoggerProvider(loggingFactory, omitMySqlConnectorPrefix: true) .
Added .UseMySqlConnectorLogging() extension method to add logging easily.
Breaking Change how option keys are serialized when retrieving the MySqlConnectionStringBuilder.ConnectionString property:
Target .NET 6.0.
Breaking Update the MySqlBatch (experimental API) to match .NET 6.0 API changes.
Support DateOnly and TimeOnly structs: #963 .
Use ZLibStream for compression: #957 .
Use X_OR_GREATER preprocessor definitions: #958 .
Breaking Improve MySqlBulkCopy API: #1012 .
Breaking Remove ConnectionIdlePingTime : #1042 .
The Connection Idle Ping Time connection string option is still accepted, but has no effect.
If Connection Reset = False , MySqlConnection.Open will return a pooled connection (if one is available) without testing it for liveness (by pinging the server). If the server has closed the pooled connection, MySqlConnection.Open will succeed, but the first operation on that connection will fail. Command execution should be wrapped in a try/catch/retry loop to handle this scenario.
Connection Reset = False improves performance but may degrade reliability; Connection Reset = True , which is the default, is still recommended for greatest reliability.
Breaking Change how option keys are serialized when retrieving the MySqlConnectionStringBuilder.ConnectionString property:
For example, User Id is now User ID , DefaultCommandTimeout is now Default Command Timeout , etc.
All existing connection strings are still valid, and all the previous aliases for connection string options are still accepted.
The primary connection string option key is listed first in the documentation at https://mysqlconnector.net/connection-options/ .
Breaking Seal MySqlCommandBuilder and MySqlConversionException .
Remove netstandard1.3 and netcoreapp2.1 target frameworks: #1031 , #1067 .
Add ActivitySource for tracing: #1036 .
Reduce default log message severity: #981 .
Add MySqlConnection.ProvideClientCertificatesCallback , MySqlConnection.ProvidePasswordCallback , MySqlConnection.RemoteCertificateValidationCallback : #800 , #976 .
Support BigInteger as parameter value: #1069 .
Add more values to MySqlErrorCode : #1048 .
Make MySqlError.Code obsolete: #1011 .
Use ErrorCode property instead.
Remove BackgroundConnectionResetHelper : #1013 .
MySqlConnectionStringBuilder.DeferConnectionReset is obsolete and will always be treated as if it’s true .
Add NuGet package READMEs: #1053 .
Add [Category] , [DefaultValue] , and [Description] attributes to all MySqlConnectionStringBuilder properties.
Improve performance of Regex usage internally.
Throw an informative exception if DELIMITER is used in a SQL statement: #1010 .
Fix MySqlConnectionStringBuilder.TryGetValue : #1030 .
Fix incorrect value for MySqlCommand.LastInsertedId when executing multiple commands: #1026 .
Fix bug executing stored procedures with backticks in their names: #1029 .
Fix rare ObjectDisposedException that could be thrown when a connection timeout occurred.
Fix bug that failed to deserialize a binary row (from a prepared statement) correctly: #1018 .
Remove inner exception for UnableToConnectToHost exception: #1035 .
Remove inner exception for UnableToConnectToHost exception: #1035 .
Reword “recovering leaked sessions” log message.
Fix bug executing stored procedures with backticks in their names: #1029 .
Add MySqlError.ErrorCode : #1011 .
Add MySqlError.ErrorCode : #1011 .
Allow MySqlDataReader.GetDateTime to read a VARCHAR column as a DateTime : #980 .
Support the NEWDATE column type: #1007 .
Handle NoBackslashEscapes for binary parameter values: #999 .
Handle NoBackslashEscapes for binary parameter values: #999 .
Fix NotSupportedException when cancelling a MySqlCommand in a TransactionScope : #1001 .
Ignore InvalidOperationException thrown from MySqlConnection.Cancel : #1002 .
Set the default value of DeferConnectionReset to true ; this disables background connection reset and restores the pre-1.3 behavior.
Thanks to Konstantin Preißer for contributions to this release.
Use StringBuilder.GetChunks (in .NET 5.0) for MySqlParameter : #977 .
Use StringBuilder.GetChunks (in .NET 5.0) for MySqlParameter : #977 .
Fix error encoding multibyte characters in MySqlBulkCopy : #974 .
Fix error encoding multibyte characters for StringBuilder MySqlParameter values in .NET 5.0.
Reduce latency of resetting connections: #982 .
Add support for SingleStore : #968 .
Add support for SingleStore : #968 .
Thanks to Carl Sverre and Tigran Avanesov for contributions to this release.
Add NuGet Package ReadMe: #978 .
Support StringBuilder , Memory , and ReadOnlyMemory as MySqlParameter.Value values: #975 .
Support StringBuilder , Memory<char> , and ReadOnlyMemory<char> as MySqlParameter.Value values: #975 .
Fix ArgumentException in MySqlBulkCopy : #974 .
Improve compatibility with MySQL Server 8.0.24:
Improve compatibility with MySQL Server 8.0.24:
Ignore new ER_CLIENT_INTERACTION_TIMEOUT error packet sent to timed-out connections: #970 .
Known Issue: Connections with UseCompression=true may throw a MySqlProtocolException when timed out.
Support Enum parameters in prepared commands: #965 .
Support Enum parameters in prepared commands: #965 .
Fix OverflowException reading OkPayload : #966 .
Fix internal SQL parsing error with C-style comments.
Fix a bug that could cause a timed-out query to still throw a QueryInterrupted MySqlException instead of CommandTimeoutExpired .
Remove two new Info log messages added in 1.3.0: #956 .
Remove two new Info log messages added in 1.3.0: #956 .
The equivalent messages in 1.2.1 were at Debug level.
Make Adler32 class internal .
This was not intended to be added to the public API in 1.3.0.
Connections are now reset asynchronously in the background: #178 .
Connections are now reset asynchronously in the background: #178 .
This speeds up MySqlConnection.Open(Async) but still cleans up connections between uses.
Use DeferConnectionReset=true in the connection string to revert to the old behaviour.
Experimental Use ConnectionIdlePingTime=300 in the connection string to avoid any network I/O when retrieving a connection from the pool; this is fastest but may return invalid connections from Open . This setting is experimental and may change in the future.
Change default value of IgnorePrepare to false : #929 .
Calling MySqlCommand.Prepare(Async) will have an effect by default.
Implement Azure Server Redirection: #789 .
Support community protocol for server redirection: #945 .
Support MemoryStream as a value for MySqlParameter.Value : #943 .
Implement MySqlException.IsTransient : #849 .
Implement IComparable<MySqlDateTime> and IEquatable<MySqlDateTime> on MySqlDateTime .
Breaking Remove public constructor for MySqlConversionException .
This constructor was never intended to be public .
Implement serialization for exceptions.
Report CommandTimeoutExpired consistently: #939 .
This changes the MySqlException.ErrorCode from QueryInterrupted to CommandTimeoutExpired .
Nagle’s Algorithm is disabled on TCP sockets: #921 .
Adler32 checksum (for compressed packets) uses hardware acceleration: #865 .
Set timeouts for cancellation operations from CancellationTimeout connection string option: #951 .
Throw OperationCanceledException from OpenAsync when the CancellationToken is cancelled: #931 .
Use transaction for ‘SHOW WARNINGS’: #918 .
Improve exception message for unsupported parameter types: #925 .
Fix exception in server version parsing: #934 .
Fix silent failure to use TLS 1.3 (when explicitly requested) on older frameworks.
Fix error deserialising MySqlException.ErrorCode property.
Prevent exceptions being thrown from MySqlTransaction.Dispose : #923 .
Fix nested MySqlException (thrown in some scenarios from ExecuteReader ).
Use .NET 5.0 methods to load PEM certificates.
Thanks to Oleksandr Novak for contributions to this release.
Fix bug in extracting PEM data when there’s extra data in the certificate file: #912 .
Fix bug in extracting PEM data when there’s extra data in the certificate file: #912 .
Thanks to Laurents Meyer for contributions to this release.
Add TlsCipherSuites connection string option for fine-grained control of TLS cipher suites: #904 .
Add TlsCipherSuites connection string option for fine-grained control of TLS cipher suites: #904 .
This option is only supported on Linux when using .NET Core 3.1 or .NET 5.0 or later.
Fix bug loading GUIDs with MySqlBulkCopy .
Cancel query (server-side) when CommandTimeout expires: #455 .
Support .NET 5.0.
Cancel query (server-side) when CommandTimeout expires: #455 .
Add CancellationTimeout connection string option.
Implementation details discussed in this comment .
Return null from MySqlDataReader.GetSchemaTable when there is no result set: #877 .
Make DisposeAsync fully async: #876 .
Ignore ObjectDisposedException thrown in TryResetConnectionAsync : #897 .
Ignore closed/disposed connections/commands in MySqlCommand.Cancel : #820 .
Fix bug where sessions could time out if they were opened but no queries were ever executed.
Thanks to Dirk Lemstra and laurent-jeancler-realist for contributions to this release.
Support ENUM columns that use the MYSQL_TYPE_ENUM type in their column metadata: #850 .
Support ENUM columns that use the MYSQL_TYPE_ENUM type in their column metadata: #850 .
Allow MySqlCommand.CommandText and .Connection to be changed while another command is executing: #867 .
Make schema collection names (for MySqlConnection.GetSchema(collectionName) ) case-insensitive: #852 .
Fix MySqlBulkLoader with Azure Database for MySQL/MariaDB: #853 .
Fix bug preventing the retrieval of more than 2^31-1 rows in a single query: #863 .
Fix MySqlParameterCollection.Insert implementation: #869 .
Fix integer overflow in sequence number for compressed packets.
Fix ZLIB header flags verification for compressed packets.
Thanks to akamor for contributions to this release.
Breaking Change namespace to MySqlConnector : #824 .
Breaking Change namespace to MySqlConnector : #824 .
Breaking Rename MySqlClientFactory to MySqlConnectorFactory : #839 .
Breaking All MySqlConnectionStringBuilder string properties return "" (not null ) when unset: #837 .
Breaking Remove MySqlInfoMessageEventArgs.errors property; use .Errors instead.
Implement async schema APIs: #835 .
Implement MySqlConnectorFactory.CanCreateXyz methods: #838 .
Add net5.0 target framework.
Add MySqlException.ErrorCode : #830 .
Add MySqlConnection.ResetConnectionAsync : #831 .
Add documentation at https://mysqlconnector.net/api/ built from XML doc comments: #827 .
Allow rows larger than 1 MiB in MySqlBulkCopy : #834 .
Reduce memory allocations when hashing passwords (during login).
Ignore ObjectDisposedException thrown in TryResetConnectionAsync : #897 .
Ignore ObjectDisposedException thrown in TryResetConnectionAsync : #897 .
Thanks to laurent-jeancler-realist for contributions to this release.
Return null from MySqlDataReader.GetSchemaTable when there is no result set: #877 .
Fix MySqlBulkLoader with Azure Database for MySQL/MariaDB: #853 .
Fix MySqlBulkLoader with Azure Database for MySQL/MariaDB: #853 .
Make schema collection names (for MySqlConnection.GetSchema(collectionName) ) case-insensitive: #852 .
Support ENUM columns that use the MYSQL_TYPE_ENUM type in their column metadata: #850 .
Your coding agent can read these notes before it upgrades. Set up the MCP server →