Estoy usando MySQL 5.0.27 y estoy tratando de hacer que las transacciones funcionen. He seguido este tutorial:Transacciones en MySQL - No se puede deshacer
http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqltransaction.html
y todavía no puede conseguir éstos para trabajar. La tabla que estoy tratando de actualizar es InnoDB y han intentado ejecutar 'set de confirmación automática = 0', pero no parece estar haciendo nada .... El código que he escrito es el siguiente:
public int transactionUpdate()
{
MySqlConnection connection = new MySqlConnection(connStr);
connection.Open();
MySqlCommand command = connection.CreateCommand();
MySqlTransaction trans;
trans = connection.BeginTransaction();
command.Connection = connection;
command.Transaction = trans;
try
{
command.CommandText = "SET autocommit = 0";
command.executeNonQuery();
command.CommandText = "UPDATE TBL.rec_lang rl SET rl.lang_code = 'en-us' WHERE rl.recording=123456";
command.executeNonQuery();
command.CommandText = "UPDATE TBL.rec_lang rl SET rl.lang_code = en-us WHERE rl.recording=123456";
command.executeNonQuery();
trans.Commit();
}
catch(Exception ex)
{
try
{
trans.Rollback();
}
catch(MySqlException mse)
{
log.error(mse);
}
}
}
El segundo comando falla ya que falta el 'around' en-us '. Esto debería revertir la primera consulta también a un valor anterior, pero no es así. ¿Me puedes decir lo que estoy haciendo mal?
. MySQLConnector v 6.3.6.0
MySQL v. 5.0.27
C# VS2010
Se está tragando la excepción 'ex'. ¡No está bien! ¡No hagas eso! –
¿Qué motor de almacenamiento está utilizando? ¿Las transacciones funcionan directamente usando un administrador o una consola? –
el motor de almacenamiento es InnoDB por lo que puedo decir (en SQLYog -> seleccionar tabla, clic derecho en propiedades avanzadas, motor = InnoDB Versión 10) – Austin