mod_storage_sql: Add extra logging and error handling around table creation 0.8.2
authorMatthew Wild <mwild1@gmail.com>
Sat, 11 Jun 2011 02:16:26 +0100
changeset 4318 44b131d7041b
parent 4317 5b0fcc5cdd4d
child 4319 b46b766ce0af
child 4320 c3f39ccc7c50
mod_storage_sql: Add extra logging and error handling around table creation
plugins/mod_storage_sql.lua
--- a/plugins/mod_storage_sql.lua	Sat Jun 11 02:15:38 2011 +0100
+++ b/plugins/mod_storage_sql.lua	Sat Jun 11 02:16:26 2011 +0100
@@ -75,7 +75,7 @@
 		create_sql = create_sql:gsub("`value` TEXT", "`value` MEDIUMTEXT");
 	end
 	
-	local stmt = connection:prepare(create_sql);
+	local stmt, err = connection:prepare(create_sql);
 	if stmt then
 		local ok = stmt:execute();
 		local commit_ok = connection:commit();
@@ -103,18 +103,25 @@
 			local commit_ok = connection:commit();
 			if ok and commit_ok then
 				if stmt:rowcount() > 0 then
+					module:log("info", "Upgrading database schema...");
 					local stmt = connection:prepare("ALTER TABLE prosody MODIFY COLUMN `value` MEDIUMTEXT");
-					local ok = stmt:execute();
+					local ok, err = stmt:execute();
 					local commit_ok = connection:commit();
 					if ok and commit_ok then
 						module:log("info", "Database table automatically upgraded");
+					else
+						module:log("error", "Failed to upgrade database schema (%s), please see "
+							.."http://prosody.im/doc/mysql for help",
+							err or "unknown error");
 					end
 				end
 				repeat until not stmt:fetch();
-			else
-				module:log("error", "Failed to upgrade database schema, please see http://prosody.im/doc/mysql for help");
 			end
 		end
+	elseif params.driver ~= "SQLite3" then -- SQLite normally fails to prepare for existing table
+		module:log("warn", "Prosody was not able to automatically check/create the database table (%s), "
+			.."see http://prosody.im/doc/modules/mod_storage_sql#table_management for help.",
+			err or "unknown error");
 	end
 end