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
Breaking The default value for the UseAffectedRows connection string option has changed from true to false . This provides better compatibility with C
Breaking The default value for the UseAffectedRows connection string option has changed from true to false . This provides better compatibility with Connector/NET’s defaults and also with other ADO.NET libraries: #600 .
If you are upgrading from an earlier version of MySqlConnector, either audit your uses of the return value of ExecuteNonQuery (it will now return the number of rows matched by the WHERE clause for UPDATE statements, instead of the number of rows whose values are actually changed), or add UseAffectedRows=true to your connection string.
If you are migrating (or have recently migrated) from Connector/NET to MySqlConnector, then no changes need to be made: MySqlConnector now exhibits the same default behaviour as Connector/NET.
Make MySqlException serializable: #601 .
Set MySqlException.Number to MySqlErrorCode.UnableToConnectToHost when connecting fails: #599 .
Populate MySqlException.Data dictionary: #602 .
Fix InvalidCastException in MySqlDataReader.GetDateTime when AllowZeroDateTime=True : #597 .
One column per quarter.
Add net471 as target platform: #595 .
Add net471 as target platform: #595 .
Support IDbColumnSchemaGenerator interface in netcoreapp2.1 package.
Fix error in binding parameter values for prepared statements.
Fix exception when using more than 32,767 parameters in a prepared statement.
Potentially breaking Change default connection collation from utf8mb4_bin to utf8mb4_general_ci : #585 .
Breaking Disallow duplicate parameter names after normalization: #591 .
Potentially breaking Change default connection collation from utf8mb4_bin to utf8mb4_general_ci : #585 .
Potentially breaking Update stored procedure metadata cache to use mysql.proc when available: #569 .
This provides higher performance, but is a potentially-breaking change for any client using stored procedures.
Change System.Transactions support:
Add UseXaTransactions connection string option to opt out of XA transactions (equivalent to Connector/NET behaviour): #254 .
Potentially breaking Opening multiple (distinct) MySqlConnection objects within the same transaction will reuse the same server session: #546 .
Add MySqlConnection.InfoMessage event: #594 .
Implement ICloneable on MySqlCommand : #583 .
Fix logic for detecting variable names in SQL: #195 , #589 .
Fix NullReferenceException when attempting to invoke a non-existent stored procedure.
Support MySQL Server 5.1 (and earlier) by using utf8 if utf8mb4 isn’t available.
Reduce log message severity for session discarded due to ConnectionLifeTime : #586 .
Optimise MySqlDataReader.GetStream : #592 .
Use latest dotnet SourceLink package.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix NullReferenceException in GetSchemaTable : #580 .
Fix NullReferenceException in GetSchemaTable : #580 .
Return correct schema table for second result set: #581 .
Support MariaDB GSSAPI authentication: #577 .
Support MariaDB GSSAPI authentication: #577 .
Log received error payloads at Debug level.
Thanks to Vladislav Vaintroub for contributions to this release.
Fix missing InnerException on MySqlConnection created for a timeout: #575 .
Fix CryptographicException when loading a PFX certificate file: #574 .
Implement ICloneable on MySqlParameter : #567 .
Add MySqlParameter.Clone .
Implement ICloneable on MySqlParameter : #567 .
Implement MySqlParameterCollection.CopyTo .
Add logging for cached procedures.
Thanks to Jorge Rocha Gualtieri for contributions to this release.
Fix error parsing SQL parameters: #563 .
Fix error parsing SQL parameters: #563 .
Add documentation for common errors: #565 .
Implement MySqlConnection.GetSchema("ReservedWords") : #559 .
Implement MySqlConnection.GetSchema("ReservedWords") : #559 .
Optimisation: Use ReadOnlySpan<byte> when deserialising payloads.
Thanks to Federico Sasso for contributions to this release.
MySqlCommand.Prepare will cache the prepared command until the connection is reset.
MySqlCommand.Prepare will cache the prepared command until the connection is reset.
Improve performance of MySqlCommand.Prepare , especially when preparation is unnecessary.
Lazily allocate MySqlParameterCollection (accessed via MySqlCommand.Parameters ) for better performance when command parameters aren’t used.
Use GC.SuppressFinalize to improve performance when various objects (derived from Component ) aren’t properly disposed.
Add Application Name connection string setting: #547 .
Add Application Name connection string setting: #547 .
Clear connection pools on exit: #545 .
Allow ConnectionString to be set on a closed connection: #543 .
Fix intermittent NotSupportedException with SSL connections under .NET Core 2.1: #509 .
Add first version of prepared commands: #534 .
Add first version of prepared commands: #534 .
Only single statements (and not stored procedures) are preparable.
The (new) IgnorePrepare connection string option defaults to true and must be set to false to use prepared commands.
Add CertificateStore and CertificateThumbprint connection string options: #536 .
Fix bug that rejected sessions from the connection pool if ChangeDatabase had been called: #515 .
Don’t map TINYINT(1) UNSIGNED as bool : #530 .
Thanks to Jan Hajek for contributions to this release.
Fix bug (introduced in 0.42.2) that caused extremely high memory usage: #528 .
Fix bug (introduced in 0.42.2) that caused extremely high memory usage: #528 .
Allow DATE columns with invalid DateTime values to be read as MySqlDateTime : #529 .
Fix bug that ignored last result set returned from a stored procedure if it was empty: #524 .
Fix bug that ignored last result set returned from a stored procedure if it was empty: #524 .
Fix extra memory usage if column definition payloads exceeded original size estimate.
Fix NotImplementedException reading a GEOMETRY column as byte[] : #70 .
Fix NotImplementedException reading a GEOMETRY column as byte[] : #70 .
Fix negative TIME parsing: #518 .
Fix ArgumentException preparing a SQL statement: #520 .
Add AllowZeroDateTime connection string option: #507 .
Add AllowZeroDateTime connection string option: #507 .
Add MySqlDateTime type (to allow invalid DateTime values to be represented).
Add GuidFormat connection string option (for better compatibility with MySQL 8.0 UUID_TO_BIN ): #497 .
Add GuidFormat connection string option (for better compatibility with MySQL 8.0 UUID_TO_BIN ): #497 .
Add InteractiveSession connection string option: #510 .
Add PipeName connection string option: #454 .
Improve performance by using ReadOnlySpan<byte> , Utf8Formatter , and Utf8Parser : #426 .
Add netcoreapp2.1 package.
Remove unnecessary dependencies from netstandard2.0 package.
Fix error in loading multiple certificates on macOS.
Fix bug in setting MySqlParameter.Precision and Scale under netstandard1.3 .
Thanks to Ed Ball for contributions to this release.
Allow CACertificateFile to contain multiple (concatenated) certificates: #499 .
Allow CACertificateFile to contain multiple (concatenated) certificates: #499 .
Avoid IndexOutOfRangeException in ValidateRemoteCertificate : #498 .
Fix caching_sha2_password authentication for MySQL Server 8.0.11 release: #489 .
Reverted ConnectionReset=true optimisation (added in 0.40.0) that was incompatible with Aurora: #486 .
Always use new DateTimeKind setting: #484 .
Add DateTimeKind connection string setting: #479 .
Add DateTimeKind connection string setting: #479 .
Fix ArgumentException for SslProtocols.None : #482 .
Fix IOException being thrown at startup: #475 .
Fix race condition in OpenTcpSocketAsync : #476 .
Optimise MySqlConnection.Open when ConnectionReset=true (default): #483 .
Thanks to Ed Ball for contributions to this release.
Add IgnoreCommandTransaction connection string setting: #474 .
Add Serilog logging provider: #463 .
Add Serilog logging provider: #463 .
Add NLog logging provider: #470 .
Implement IDbDataParameter on MySqlParameter : #465 .
Implement MySqlDataReader.GetChar : #456 .
Add MySqlDataReader.GetFieldType(string) overload: #440 .
Fix a connection pooling session leak in high contention scenarios: #469 .
Fix overhead of extra connection pools created in a race: #468 .
Thanks to Marc Lewandowski and Rolf Kristensen for contributions to this release.
Serialize enum parameter values as strings when MySqlParameter.MySqlDbType is set to MySqlDbType.String or VarChar : #459 .
Serialize enum parameter values as strings when MySqlParameter.MySqlDbType is set to MySqlDbType.String or VarChar : #459 .
Require ConnectionIdlePingTime (added in 0.37.0) to be explicitly set to a non-zero value to avoid pinging the server.
Thanks to Naragato for contributions to this release.
Support TLS 1.2 on Windows clients: #458 .
Support TLS 1.2 on Windows clients: #458 .
Use the best TLS version supported by the OS, as per best practices .
Add ConnectionIdlePingTime connection string setting (Experimental) : #461 .
Fix failure to log in for accounts with empty passwords that use caching_sha2_password .
Throw MySqlException for invalid port number in connection string.
Reap connections more frequently if ConnectionIdleTimeout is low: #442 .
Reap connections more frequently if ConnectionIdleTimeout is low: #442 .
Fix ArgumentOutOfRangeException when command times out: #447 .
Speed up connection pooling (particularly in applications that only have one connection string).
Reduce heap allocations in common scenarios.
Breaking Require CertificateFile to include private key (for mutual authentication): #436 .
Breaking Require CertificateFile to include private key (for mutual authentication): #436 .
Add MySqlDataReader.GetX(string) overloads: #435 .
Add MySqlDataReader.GetTimeSpan : #438 .
Add MySqlDataReader.GetUInt16 , GetUInt32 , GetUInt64 : #439 .
Set MySqlConnection.State to ConnectionState.Closed when the connection fails: #433 .
Fix error parsing -- comments in SQL: #429 .
Fix error parsing C-style comments in SQL.
Breaking Wrap unhandled SocketException in MySqlException : #434 .
Add MySqlCommandBuilder.DeriveParameters : #419 .
Add MySqlCommandBuilder.DeriveParameters : #419 .
Add MySqlConnection.Ping and MySqlConnection.PingAsync : #260 .
Fix exception when a stored procedure returns NULL for an OUT parameter: #425 .
Add overloads of MySqlParameterCollection.Add : #424 .
Add overloads of MySqlParameterCollection.Add : #424 .
Fix conversion of MySqlCommand.LastInsertedId : #422 .
Fix “Expected state to be Failed but was Connected” InvalidOperationException : #423 .
Improve performance when calling stored procedures with no parameters (this was regressed in 0.34.0).
Reduce severity of some logging statements.
Implement MySqlCommandBuilder : #303 .
Implement MySqlCommandBuilder : #303 .
Add Microsoft.Extensions.Logging provider: #418 .
Add new MySqlTransaction.Connection property that returns an object typed as MySqlConnection .
Support CLIENT_SESSION_TRACK protocol option: #323 .
Optimization: move procedure cache to connection pool: #415 .
Ignore extra data at end of column definition payload: #413 .
Handle failure to find procedure: #282 .
Breaking Clear MySqlTransaction.Connection when transaction is committed: #61 .
This is a breaking API change from Connector/NET, but matches other ADO.NET connectors.
Breaking Throw InvalidCastException instead of MySqlException from MySqlDataReader.GetGuid .
Breaking Throw InvalidCastException instead of MySqlException from MySqlDataReader.GetGuid .
This is a breaking API change from Connector/NET, but matches other ADO.NET connectors.
Fix default values of MySqlParameter.ParameterName and .SourceColumn ; they now follow MSDN documentation.
Fix ObjectDisposedException when a connection is returned to the pool: #411 .
Fix NotSupportedException when MySqlParameter.Value is set to a char : #412 .
Add missing .ConfigureAwait(false)
Implement logging framework: #390 .
Implement logging framework: #390 .
Add new project, MySqlConnector.Logging.log4net , that adapts MySqlConnector logging for log4net.
Implement MySqlDataAdapter : #183 .
Get correct connection ID for Azure Database for MySQL.
Use AdoNet.Specification.Tests test suite to validate implementation.
Implement more MySqlParameter constructor overloads: #402 .
Implement more MySqlParameter constructor overloads: #402 .
This improves compatibility with Connector/NET.
Implement MySqlParameter.Precision and MySqlParameter.Scale .
The properties are provided only for source compatibility.
Not available on .NET 4.5.
Implement MySqlDataReader.GetChars .
Implement MySqlDataReader.Depth .
Fix NullReferenceException in MySqlDataReader when reader is disposed.
Breaking Throw InvalidCastException (instead of MySqlException ) from MySqlDataReader.GetGuid if column is NULL .
Breaking Throw InvalidOperationException (instead of MySqlException ) from MySqlConnection.ConnectionString setter if connection is open.
Breaking Throw ArgumentException (instead of InvalidOperationException ) from MySqlConnectionStringBuilder for invalid option names.
Fix return value of ExecuteScalar to be the first column from the first row of the first result set.
Fix return value of ExecuteScalar to be the first column from the first row of the first result set.
Fix return value of ExecuteNonQuery to correctly return -1 for SELECT statements.
Fix bug where NextResult returns true for a trailing comment in a SQL statement.
Breaking Throw InvalidOperationException if MySqlCommand.CommandText is set while the command is active.
Breaking Throw InvalidOperationException (instead of MySqlException ) if a MySqlCommand is executed while there is an open reader.
Breaking Throw InvalidOperationException from MySqlCommand.Prepare when preconditions aren’t met.
Breaking Throw InvalidOperationException when MySqlCommand.Connection can’t be set (instead of MySqlException ).
Breaking Throw InvalidOperationException when MySqlCommand.Connection can’t be set (instead of MySqlException ).
Breaking Throw InvalidOperationException from MySqlCommand.Prepare when preconditions aren’t met.
Fix NullReferenceException when MySqlCommand.Connection isn’t set (now correctly throws InvalidOperationException ).
Fix InvalidOperationException if MySqlBulkLoader is used inside a transaction (again): #300 .
Fix InvalidOperationException if MySqlBulkLoader is used inside a transaction (again): #300 .
Breaking Remove MySqlBulkLoader.Transaction property (added in 0.24.0); MySqlBulkLoader will always use the ambient transaction, if any. This matches Connector/NET API & behaviour.
Implement MinimumPoolSize : #85 .
Implement MinimumPoolSize : #85 .
Implement server load balancing with new LoadBalance connection string setting: #226 .
Add SourceLink.
Wrap EndOfStreamException in MySqlException when connecting fails: #388 .
Fix StackOverflowException when reading large BLOBs asynchronously.
Don’t set Transaction on new MySqlCommand : #389 .
Ignore MySqlConnection.Cancel when connection is broken: #386 .
Improve internal code organisation: #376 .
Breaking Remove BufferResultSets connection string option: #378 .
Breaking Remove BufferResultSets connection string option: #378 .
The assembly is now strong-named: #224 .
Fix exception in MySqlTransaction.Dispose if the underlying connection is closed or faulted: #383 .
Remove System.Runtime.InteropServices.RuntimeInformation dependency on full framework: #381 .
Fix an exception if MySqlDataReader.GetOrdinal was called before Read : #379 .
Work around Amazon Aurora DateTime conversion issue: #364 .
Work around Amazon Aurora DateTime conversion issue: #364 .
Fix NotSupportedException in MySqlParameter : #367 .
Breaking Remove a number of MySqlErrorCode enum values (to reduce library size).
Thanks to Duane Gilbert and Naragato for contributions to this release.
Fix information disclosure vulnerability related to LOAD DATA LOCAL INFILE : #334 .
Breaking Implement MySqlConnectionStringBuilder.DefaultCommandTimeout and MySqlCommand.CommandTimeout with a default of 30 seconds: #67 .
This may cause long-running queries to throw an exception instead of succeeding; as a workaround, increase CommandTimeout .
Expose MySqlDbType and MySqlCommand.MySqlDbType : #362 .
MySqlConnector adds MySqlDbType.Bool to represent a TINYINT(1) column.
Return correct values for ProviderType in GetColumnSchema / GetSchemaTable .
Implement MySqlConnection.GetSchema : #361 .
Update documentation for .NET Core 2.0: #372 .
Fix information disclosure vulnerability related to LOAD DATA LOCAL INFILE : #334 .
Improve async performance.
Throw exception for unexpected API use: #308 .
Thanks to Gabden Ayazbayev , Tuomas Hietanen , and Dustin Masters for contributions to this release.
Allow the auth plugin name in the initial handshake to be EOF-terminated: #351 .
Support caching_sha2_password authentication for MySQL 8.0: #329 .
Support caching_sha2_password authentication for MySQL 8.0: #329 .
Fix inconsistent return value of MySqlDataReader.HasRows : #348 .
Thanks to Drake103 for contributions to this release.
Implement MySqlDataReader.GetColumnSchema : #182 .
Implement MySqlDataReader.GetColumnSchema : #182 .
Implement MySqlDataReader.GetSchemaTable : #307 .
Support MySQL Server 8.0.3 and MariaDB 10.2 collations: #336 , #337 , #338 .
Reduce allocations to improve performance: #342 , #343 .
Thanks to Alex Lee and Dave Dunkin for contributions to this release.
Fix hang closing connection with ClearDB on Azure: #330 .
Fix hang closing connection with ClearDB on Azure: #330 .
Thanks to Marcin Badurowicz for contributions to this release.
Fix overly-broad exception handler introduced in 0.26.3.
Fix overly-broad exception handler introduced in 0.26.3.
Improve efficiency of code added in 0.26.3.
Fix HasRows incorrectly returning false after all rows have been read: #327 .
Fix HasRows incorrectly returning false after all rows have been read: #327 .
Fix EndOfStreamException when reusing a pooled connection with Amazon Aurora.
Reduce network roundtrips when opening a pooled connection (with the default settings of Pooling=True;Connection Reset=true ); see #258 .
Update System.* dependencies to 4.3.0 for .NET 4.5 and .NET 4.6 packages.
Thanks to Brad Nabholz for contributions to this release.
Support CLIENT_DEPRECATE_EOF flag: #322 .
Support CLIENT_DEPRECATE_EOF flag: #322 .
Throw better exception when a malformed packet is detected.
Don’t allow sessions in an error state to be put back into the pool.
Remove unsupported CLIENT_PS_MULTI_RESULTS flag (sent during connection handshaking).
Your coding agent can read these notes before it upgrades. Set up the MCP server →