MysqlCommand неожиданно переключает соединение

0

У меня есть небольшая проблема с моими объектами MysqlConnection. У меня есть две строки подключения в моем app.config:

<connectionStrings>

    <add name="bdpvcLocalhost" connectionString="Persist Security Info=False;server=localhost;Uid=root;Password=***;database=bdpvc" providerName="Mysql.Data.MySqlClient"/>
    <add name="bdpvcProduction" connectionString="server=pvcserver.pvcservprod.local;user id=pvc_app;Pwd=***;database=bdpvc" providerName="Mysql.Data.MySqlClient"/>
</connectionStrings>

Первое соединение для локальной тестовой базы данных, второе - для реальной производственной базы данных. Поскольку я еще рано развиваться, я использую свою локальную базу данных. Затем я использую следующий код (я вырезал часть определения параметра, потому что действительно много)

using (MySqlConnection connection = new MySqlConnection(_connectionString))
{

   connection.Open();

   using (MySqlTransaction transaction = connection.BeginTransaction())
   {
       const string sequenceQuery = "INSERT INTO sequence " +
                                    "(No_Sequence, No_Client, No_Produit, No_Version_Produit, " +
                                    " No_Soumission, No_Commande, No_Reference, Date_Livraison, " +
                                    "Date_Commande, Date_Soumission, Quantite, Status, Contact, " +
                                    "Notes, No_Production_Ancien, Erreur_Production, No_Fichier_Log, " +
                                    "No_Utilisateur, Date_Enregistrement, Extension_Fichier_Fax, Uuid) " +

                                    "VALUES(?No_Sequence, ?No_Client, ?No_Produit, ?No_Version_Produit, " +
                                    "?No_Soumission, ?No_Commande, ?No_Reference, ?Date_Livraison, ?Date_Commande, " +
                                    "?Date_Soumission, ?Quantite, ?Status, ?Contact, ?Notes, ?No_Production_Ancien, " +
                                    "?Erreur_Production, ?No_Fichier_Log, ?No_Utilisateur, ?Date_Enregistrement, " +
                                    "?Extension_Fichier_Fax, ?Uuid)";

       const string selectSequenceNoQuery =
           "SELECT MAX(No_Sequence) AS Valeur_No_Increment FROM sequence";

       const string updateSequenceNoQuery =
           "UPDATE tables SET Valeur_No_Increment = ?Valeur_No_Increment WHERE Nom_Tables = 'sequence'";

       int currentIncrement = 0;


       MySqlCommand selectNoSequenceCommand = new MySqlCommand(selectSequenceNoQuery, connection,
                                                               transaction);
       MySqlCommand updateNoSequenceCommand = new MySqlCommand(updateSequenceNoQuery, connection,
                                                               transaction);
       MySqlCommand insertSequenceCommand = new MySqlCommand(sequenceQuery, connection, transaction);

       //------------------------------
        //This query execute perfectly!
       currentIncrement = Int32.Parse(selectNoSequenceCommand.ExecuteScalar().ToString());


       insertSequenceCommand.Parameters.Add("?No_Sequence", MySqlDbType.String);
       //Lots and lot of parameters definition

       foreach (Sequence sequence in _sequences)
       {
           currentIncrement++;

           sequence.No_Sequence = currentIncrement.ToString();


           insertSequenceCommand.Parameters["?No_Sequence"].Value = sequence.No_Sequence;
            //Lots and lots of value assignement

            //---------------------------------
            //But this one doesn't use the right user!
           insertSequenceCommand.ExecuteNonQuery();

           Console.WriteLine("Inserted new sequence with Uuid " + sequence.Uuid + " and increment " +
                             sequence.No_Sequence);

       }

       updateNoSequenceCommand.Parameters.AddWithValue("?Valeur_No_Increment", currentIncrement);
       updateNoSequenceCommand.ExecuteNonQuery();

       transaction.Commit();
   }
}

Первый запрос выполняется просто отлично. Однако второй запрос не может выполнить, поскольку "пользователь pvc_app не существует". Но я подключаюсь к моей локальной базе данных как root! И никогда в моем коде я не переключаю строку подключения! Я попытался удалить вторую строку подключения в app.config, но она пыталась подключиться как pvc_app. Я несколько раз перестраивал приложение, перезагружал свой компьютер и даже удалял/переустанавливал ADO.NET-коннектор, но он продолжал пытаться подключиться как pvc_app! Я здесь что-то не так?

Теперь, где находится этот таинственный "кеш строки соединения", чтобы я мог убить его своей голой рукой? Потому что это действительно делает мою жизнь несчастью прямо сейчас.

Теги:
ado.net

1 ответ

0
Лучший ответ

Обходной путь этой проблемы заключался в создании другого пользователя с паролем по умолчанию. Затем соединение работало нормально. Кажется, это ошибка с ADO.NET-коннектором.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню