Skip to content

When connection strings contains "Allow Zero Datetime=True" MySqlConnector fails to read dates from database #597

@MiloszKrajewski

Description

@MiloszKrajewski

Versions

Runtime: NET Framework 4.7.1
MySqlConnector: 0.48.1
MySQL: 5.7.21 (docker@ubuntu)

Symptoms

When connection strings contains "Allow Zero Datetime=True" MySqlConnector fails to read dates from database, even something like select now().

Throws:

Test method x.AdHocTests.TryWithAllowZeroDateTime threw exception: 
System.InvalidCastException: Specified cast is not valid.
    at MySql.Data.MySqlClient.MySqlDataReader.GetDateTime(Int32 ordinal) in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs:line 200
   at x.AdHocTests.TryWithAllowZeroDateTime(Boolean allowZeroDateTime)

Code

[TestClass]
public class AdHocTests
{
    [TestMethod]
    [DataRow(false)]
    [DataRow(true)]
    public void TryWithAllowZeroDateTime(bool allowZeroDateTime = false)
    {
        var connectionString =
            "server=localhost;port=3306;database=x;uid=x;password=x";
        if (allowZeroDateTime)
            connectionString += ";Allow Zero Datetime=True";
        var queryText = "select now()";

        using (var connection = new MySqlConnection(connectionString))
        using (var command = new MySqlCommand 
            { Connection = connection, CommandText = queryText })
        {
            connection.Open();
            using (var reader = command.ExecuteReader())
            {
                reader.Read();
                var _ = reader.GetDateTime(0);
            }
        }
    }
}

Expected results

Test passes in both cases

Actual results

Test passes for false (no "Allow Zero Datetime") but fails for true (with "Allow Zero Datetime").

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions