# HG changeset patch # User Matthew Wild # Date 1307754986 -3600 # Node ID 44b131d7041ba40ff2cab6519d1543d33ff679a4 # Parent 5b0fcc5cdd4df20195b19a8af80b4ee622faa6f7 mod_storage_sql: Add extra logging and error handling around table creation diff -r 5b0fcc5cdd4d -r 44b131d7041b 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