NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #234 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
Support GEOMCOLLECTION data type alias in MySQL Server 8.0: #845 .
Improve robustness of OK packet parsing: #842 .
Fix connection pool leak when a failure (e.g., timeout) occurs on a connection: #836 .
One column per quarter.
Fix Failed to read the result set. error when using MySqlBulkCopy : #780 .
Remove Console.WriteLine debugging code that was inadvertently added in 0.69.1.
Fix OverflowException when calling MySqlDataReader.GetInt32 on a DECIMAL column: #832 .
Breaking Change MySqlGeometry.Value from returning ReadOnlySpan to byte[] : #829 .
Breaking Change MySqlGeometry.Value from returning ReadOnlySpan<byte> to byte[] : #829 .
Thanks to Laurents Meyer for contributions to this release.
Fix SQL syntax error when calling BeginTransaction(IsolationLevel.Snapshot, isReadOnly: true); : #817 .
Add MySqlConnection.BeginTransaction overload with isReadOnly parameter: #817 .
Add MySqlConnection.BeginTransaction overload with isReadOnly parameter: #817 .
Support MySqlCommand.Prepare for CommandType.StoredProcedure : #742 .
Breaking Add new implementations of MySqlCommand.ExecuteReaderAsync that return Task : #822 .
Breaking Add new implementations of MySqlCommand.ExecuteReaderAsync that return Task<MySqlDataReader> : #822 .
Breaking MySqlBulkCopy.DestinationTableName must be quoted if it contains reserved keywords or characters: #818 .
Automatically create expressions for BIT and binary columns in MySqlBulkCopy : #816 .
Throw an exception from MySqlBulkCopy if not all rows were inserted: #814 .
Add logging to MySqlBulkCopy .
Detect simple column mapping errors in MySqlBulkCopy .
Breaking Add MySqlBulkCopy.RowsCopied property: #809 .
Breaking Add MySqlBulkCopy.RowsCopied property: #809 .
The RowsCopied event is renamed to MySqlRowsCopied .
The MySqlRowsCopied event is no longer guaranteed to be raised at the end of copying.
Fix NullReferenceException when calling a stored procedure with an ENUM parameter: #812 .
Track MySqlParameter name changes (when added to a MySqlParameterCollection ): #811 .
Add ColumnMappings to MySqlBulkCopy : #773 .
Restore COLUMN_TYPE column to GetSchema("COLUMNS") : #807 .
Restore COLUMN_TYPE column to GetSchema("COLUMNS") : #807 .
This was a regression in 0.64.1
Fix ignored CancellationToken in MySqlBulkCopy.WriteToServerAsync(DataTable) .
Thanks to mitchydeath for contributions to this release.
Fix timeout for named pipe connections: #804 .
Fix timeout for named pipe connections: #804 .
Fix ArgumentException calling MySqlConnection.GetSchema("COLUMNS") : #802 .
Fix Unknown column 'SRS_ID' exception calling MySqlConnection.GetSchema("COLUMNS") : #805 .
Support TlsVersion connection string option: #760 .
Support TlsVersion connection string option: #760 .
Implement IConvertible on MySqlDateTime : #798 .
Always use SESSION transaction isolation level: #801 .
Avoid composite commands when starting a transaction: #774 .
Support IsolationLevel.Snapshot in BeginTransaction : #791 .
Support IsolationLevel.Snapshot in BeginTransaction : #791 .
Support DataSourceInformation in GetSchema : #795 .
Thanks to John Battye and Vincent DARON for contributions to this release.
Fix missing quoting of table name in MySqlBulkCopy : #792 .
Fix missing quoting of table name in MySqlBulkCopy : #792 .
Fix bug in ChangeDatabase that rolled back an active transaction: #794 .
Experimental Add new transaction savepoint API (from .NET 5): #775 .
Experimental Add new transaction savepoint API (from .NET 5): #775 .
Allow TINYINT(1) ( BOOL ) columns to be read using MySqlDataReader.GetInt32 , GetInt16 , GetByte , etc. when TreatTinyAsBoolean=true : #782 .
These methods will always return 1 for any non-zero value in the underlying column.
Allow FLOAT and DOUBLE columns to be read using MySqlDataReader.GetDecimal : #785 .
Fix connection timeout when server doesn’t respond: #739 .
Thanks to Daniel Cohen Gindi for contributions to this release.
Experimental Add new MySqlBulkCopy class for efficiently loading a table from a DataTable or IDataReader : #737
Experimental Add new MySqlBulkCopy class for efficiently loading a table from a DataTable or IDataReader : #737
Known issue: individual data values larger than 16MiB cannot be sent.
Improve nullability annotations.
MySqlCommand.CommandText defaults to the empty string: #743 .
Breaking Return empty schema when there is no result set: #744 .
Optimize MySqlDataReader.GetInt32 : #725 .
Set TCP Keepalive for all operating systems: #746 .
Remove properties from MySqlConnectionStringBuilder when they’re set to null : #749 .
Send shorter connector version to server: #765 .
Throw better exception for invalid connection string values: #763 .
Fix KeyNotFoundException in GetAndRemoveStream : #757 .
Reduce ObjectDisposedExceptions thrown from MySqlCommand .
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
Nothing published for this version
Nothing published for this version
Add MySqlConnection.CloneWith : #736 .
Fix disclosure of connection password via MySqlConnection.Clone : #735 .
Improve detection of Azure Database for MySQL proxy: #731 .
Improve detection of Azure Database for MySQL proxy: #731 .
Implement CommandBehavior.SingleResult and SingleRow : #681 .
Improve “Connect Timeout” exception message when connection pool is empty.
Revalidate missing stored procedures in MySqlCommandBuilder.DeriveParameters(Async) : #730 .
Nothing published for this version
Add more schemas to MySqlConnection.GetSchema : #724 .
Add more schemas to MySqlConnection.GetSchema : #724 .
Add XML documentation to NuGet package.
Add documentation for MySqlConnection.ConnectionTimeout : #727 .
Fix exception in MySqlDataReader.FieldCount and HasRows : #728 .
This fixes a regression introduced in 0.60.1.
Thanks to Joseph Amalfitano and KaliVi for contributions to this release.
Implement CommandBehavior.SchemaOnly : #723 .
Implement CommandBehavior.SchemaOnly : #723 .
Fix MySqlDataReader methods returning data for output parameters of stored procedures: #722 .
This fixes a regression introduced in 0.57.0.
Possibly breaking Implement conversions in GetFieldValue : #716 .
Possibly breaking Implement conversions in GetFieldValue : #716 .
Add C# 8 nullable annotations to public API.
Support Tables and Views schemas in MySqlConnection.GetSchema : #719 .
Add better exception message when '0000-00-00' can’t be converted: #690 .
Implement MySqlConnection.Clone : #720 .
Update list of reserved words.
Use new Socket async APIs (.NET Standard 2.1, .NET Core 3.0).
Update System.Net.Security dependency to v4.3.1 (.NET Standard 1.3).
Thanks to Roman Marusyk and KaliVi for contributions to this release.
Nothing published for this version
Fix error when reading a BIT(1) column: #713 .
Allow DECIMAL column type to be read by GetBoolean : #707 .
Allow DECIMAL column type to be read by GetBoolean : #707 .
Fix error in reading BIT(n) columns: #708 .
Thanks to Laurents Meyer for contributions to this release.
Breaking MySqlDataReader.GetFloat() converts REAL values (from double to float ) instead of throwing InvalidCastException : #706 .
Breaking MySqlDataReader.GetFloat() converts REAL values (from double to float ) instead of throwing InvalidCastException : #706 .
Fix error in mysql_clear_password authentication plugin: #703 .
Thanks to Laurents Meyer for contributions to this release.
Add NoBackslashEscapes connection option: #701 .
Add NoBackslashEscapes connection option: #701 .
Store icon in the NuGet package: #705 .
Thanks to Laurents Meyer for contributions to this release.
Breaking Remove MySqlClientFactory.Register : #654 .
Breaking Remove MySqlClientFactory.Register : #654 .
Replace calls to this method with DbProviderFactories.RegisterFactory("MySqlConnector", MySqlClientFactory.Instance) instead.
Breaking Return type of MySqlConnection.BeginTransactionAsync changed to ValueTask<MySqlTransaction> (to match .NET Core 3.0 APIs).
Breaking Various XyzAsync method overloads that did not take a CancellationToken were removed.
Breaking Throw InvalidOperationException from MySqlDataReader.GetSchemaTable when there is no result set: #678 .
Experimental Implement the new ADO.NET DbBatch API: #650 .
This API is not finalised and may change in the future.
Add netstandard2.1 and netcoreapp3.0 platforms.
Implement .NET Core 3.0 ADO.NET API.
Add .NET Core 3.0 async methods: #642 .
Allow MySqlDataReader.GetDouble and GetFloat on DECIMAL columns: #664 .
Allow narrowing conversions in MySqlDataReader.GetByte : #695 .
Add MySqlGeometry and MySqlDataReader.GetMySqlGeometry : #677 .
The API is deliberately different than Connector/NET, which assumes a MySqlGeometry can only be a simple point.
Use sql_select_limit when CommandBehavior.SingleRow is specified: #679 .
Use batching in MySqlDataAdapter when UpdateBatchSize is set: #675 .
Support utf8mb4_0900_bin collation introduced in MySQL Server 8.0.17: #670 .
Add MySqlConnection.CloseAsync : #467 .
Throw InvalidOperationException from MySqlConnection.EnlistTransaction instead of NullReferenceException .
Fix NullReferenceException thrown from MySqlConnection.ConnectionTimeout : #669 .
Fix connection timeout when executing a stored procedure: #672 .
Fix incorrect exception being thrown after a timeout occurs executing a stored procedure: #667 .
Fix exception deserializing an OUT BOOL parameter from a stored procedure: #682 .
Fix exception deserializing an OUT TIME parameter from a stored procedure: #680 .
Fix MySqlConnection.State not being set to ConnectionState.Closed when a failure occurs if pooling is disabled: #674 .
Fix exception when executing a prepared statement if MySqlParameter.MySqlDbType was set: #659 .
Handle error packet being sent out-of-order: #662 .
Use MySqlErrorCode.UnableToConnectToHost in more situations when connecting fails: #647 .
Add some nullable annotations; these are primarily on internal types and not in the public API.
Reduce allocations on some common code paths.
Improve performance of MySqlDataReader ; reduce memory allocations.
Thanks to Josh Rees for contributions to this release.
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
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
Support client_ed25519 authentication plugin for MariaDB: #639 .
Breaking MySqlBulkLoader (for local files) and LOAD DATA LOCAL INFILE are disabled by default.
Breaking MySqlBulkLoader (for local files) and LOAD DATA LOCAL INFILE are disabled by default.
Set AllowLoadLocalInfile=true in the connection string to enable loading local data.
This is a security measure; see https://mysqlconnector.net/load-data for details.
Add AllowLoadLocalInfile connection string option: #643 .
Add SslCert and SslKey connection string options to specify a client certificate using PEM files: #641 .
Add SslCa alias for the CACertificateFile connection string option: #640 .
Implement batch updates in MySqlDataAdapter : #635 .
Implement batch updates in MySqlDataAdapter : #635 .
See Performing Batch Operations Using DataAdapters for information about the API.
Improve compatibility with latest Azure Database for MySQL changes.
Breaking MySqlDataReader.GetTextReader() will throw an InvalidCastException if the field value is NULL. Previously, it would return a StringReader wra
Breaking MySqlDataReader.GetTextReader() will throw an InvalidCastException if the field value is NULL. Previously, it would return a StringReader wrapping an empty string.
Add MySqlDataReader.GetTextReader(string name) .
Implement MySqlDataReader.GetFieldValue<T> for TextReader and Stream .
Potentially breaking Change default connection collation from utf8mb4_general_ci to the server’s default for utf8mb4 : #626 .
Potentially breaking Change default connection collation from utf8mb4_general_ci to the server’s default for utf8mb4 : #626 .
This updates a change made in 0.48.0.
Fix “Command timeout” exception being thrown when there wasn’t a command timeout: #628 .
Add support for Memory and ArraySegment as MySqlParameter.Value values.
Add support for Memory<byte> and ArraySegment<byte> as MySqlParameter.Value values.
Fix exception when setting MySqlParameter.Value to ReadOnlyMemory<byte> when using prepared commands.
Set MySqlException.Number to MySqlErrorCode.UnableToConnectToHost in more situations when connecting times out: #622 .
Set MySqlException.Number to MySqlErrorCode.UnableToConnectToHost in more situations when connecting times out: #622 .
Improve handling of MySqlConnection.Close() within TransactionScope : #620 .
Allow MySqlParameter.Value to be a ReadOnlyMemory<byte> : #624 .
Thanks to mguinness for contributions to this release.
Add MySqlClientFactory.Register() for integration with DbProviderFactories in netcoreapp2.1 : #526 .
Add MySqlClientFactory.Register() for integration with DbProviderFactories in netcoreapp2.1 : #526 .
Use more efficient “Reset Connection” for MariaDB 10.2.4 and later: #613 .
Ignore MySqlConnection.EnlistTransaction called more than once for the same transaction: #619 .
MySqlConnection.ConnectionString will always be coerced from null to the empty string.
Use ReadOnlySpan<byte> in more places when parsing server responses.
Fix multiple NullReferenceException errors that could occur in edge cases.
Use correct isolation level when starting a transaction for System.Transactions.TransactionScope : #605 .
Fix bug in parsing OK packet when CLIENT_SESSION_TRACK isn’t supported: #603 .
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →