Log to sql error log file if creating a bulk transaction command fails.

This commit is contained in:
UnknownShadow200 2016-06-21 11:03:17 +10:00
parent 7113b0ee53
commit 8fb745c434
2 changed files with 25 additions and 8 deletions

View File

@ -34,6 +34,16 @@ namespace MCGalaxy.SQL {
}
}
public static BulkTransaction CreateNative() {
try {
if (Server.useMySQL) return new MySQLBulkTransaction(MySQL.connString);
else return new Native.NativeBulkTransaction();
} catch (Exception ex) {
Server.ErrorLog(ex);
return null;
}
}
public abstract IDbCommand CreateCommand(string query);
public abstract IDataParameter CreateParam(string paramName, DbType type);
@ -71,6 +81,16 @@ namespace MCGalaxy.SQL {
return Execute(query, cmd);
}
public static IDbCommand CreateCommand(string query, BulkTransaction transaction) {
try {
return transaction.CreateCommand(query);
} catch (Exception e) {
System.IO.File.AppendAllText("MySQL_error.log", DateTime.Now + " " + query + "\r\n");
Server.ErrorLog(e);
return null;
}
}
public static bool Execute(string query, IDbCommand cmd) {
try {
cmd.ExecuteNonQuery();

View File

@ -452,13 +452,8 @@ namespace MCGalaxy
fixed (char* ptr = date) {
ptr[4] = '-'; ptr[7] = '-'; ptr[10] = ' '; ptr[13] = ':'; ptr[16] = ':';
if (Server.useMySQL) {
using (BulkTransaction bulk = BulkTransaction.Create())
using (BulkTransaction bulk = BulkTransaction.CreateNative())
DoSaveChanges(tempCache, ptr, date, bulk);
} else {
using (BulkTransaction bulk = new NativeBulkTransaction())
DoSaveChanges(tempCache, ptr, date, bulk);
}
}
tempCache.Clear();
blockCache = new List<BlockPos>();
@ -471,7 +466,9 @@ namespace MCGalaxy
"` (Username, TimePerformed, X, Y, Z, type, deleted) VALUES (@Name, @Time, @X, @Y, @Z, @Tile, @Del)";
ushort x, y, z;
IDbCommand cmd = transaction.CreateCommand(template);
IDbCommand cmd = BulkTransaction.CreateCommand(template, transaction);
if (cmd == null) return false;
IDataParameter nameP = transaction.CreateParam("@Name", DbType.AnsiStringFixedLength); cmd.Parameters.Add(nameP);
IDataParameter timeP = transaction.CreateParam("@Time", DbType.AnsiStringFixedLength); cmd.Parameters.Add(timeP);
IDataParameter xP = transaction.CreateParam("@X", DbType.UInt16); cmd.Parameters.Add(xP);