Skip to content

Inserting an enum value into an integer column yields "Incorrect integer value" #965

@helmutschneider

Description

@helmutschneider

The following program works correctly on 1.2.1 but not 1.3.2. I'm not sure if it's an intended change or a regression. Could not find anything relevant in the changelog.

using System;
using System.Threading.Tasks;
using MySqlConnector;

namespace App
{
    enum CarKind
    {
        Toyota,
    }

    sealed class Program
    {
        const string CarSchemaSql = @"
          CREATE TABLE `car` (
              `id` BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT,
              `kind` TINYINT UNSIGNED NOT NULL
          )";

        const string InsertCarSql = @"INSERT INTO `car`(`kind`) VALUES (?)";

        async static Task Main(string[] args)
        {
            var builder = new MySqlConnectionStringBuilder
            {
                Server = "127.0.0.1",
                UserID = "root",
                Password = "",
                Database = "my_db",
            };

            var conn = new MySqlConnection(builder.ConnectionString);

            await conn.OpenAsync();

            using var tblCmd = conn.CreateCommand();
            tblCmd.CommandText = CarSchemaSql;

            await tblCmd.PrepareAsync();
            await tblCmd.ExecuteNonQueryAsync();

            using var insertCmd = conn.CreateCommand();
            insertCmd.CommandText = InsertCarSql;
            await insertCmd.PrepareAsync();

            var param = insertCmd.CreateParameter();
            param.Value = CarKind.Toyota;
            insertCmd.Parameters.Add(param);

            // Fails on 1.3.2 with
            //   Unhandled exception. MySqlConnector.MySqlException (0x80004005): Incorrect integer value: '' for column 'kind' at row 1
            await insertCmd.ExecuteNonQueryAsync();
        }
    }
}
Unhandled exception. MySqlConnector.MySqlException (0x80004005): Incorrect integer value: '' for column 'kind' at row 1
   at MySqlConnector.Core.ServerSession.ReceiveReplyAsyncAwaited(ValueTask`1 task) in /_/src/MySqlConnector/Core/ServerSession.cs:line 867
   at MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in /_/src/MySqlConnector/Core/ResultSet.cs:line 50
   at MySqlConnector.MySqlDataReader.ActivateResultSet(CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:line 135
   at MySqlConnector.MySqlDataReader.CreateAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, IDictionary`2 cachedProcedures, IMySqlCommand command, CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:line 444
   at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(IReadOnlyList`1 commands, ICommandPayloadCreator payloadCreator, CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/CommandExecutor.cs:line 60
   at MySqlConnector.MySqlCommand.ExecuteNonQueryAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:line 266

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions