aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gen_storage_migration.erl16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/gen_storage_migration.erl b/src/gen_storage_migration.erl
index d965f7450..1e58a0179 100644
--- a/src/gen_storage_migration.erl
+++ b/src/gen_storage_migration.erl
@@ -137,8 +137,13 @@ migrate_odbc1(Host, Tables, {OldTablesColumns, MigrateFun}) ->
{[OldTable | _] = OldTables,
[OldColumns | _] = OldColumnsAll} = lists:unzip(OldTablesColumns),
OldTablesA = [list_to_atom(Table) || Table <- OldTables],
- ColumnsT = [odbc_table_columns_t(OldTable1) || OldTable1 <- OldTables],
- migrate_odbc2(Host, Tables, OldTable, OldTables, OldColumns, OldColumnsAll, OldTablesA, ColumnsT, MigrateFun).
+ case is_table_exists(OldTable, odbc) of
+ true ->
+ ColumnsT = [odbc_table_columns_t(OldTable1) || OldTable1 <- OldTables],
+ migrate_odbc2(Host, Tables, OldTable, OldTables, OldColumns, OldColumnsAll, OldTablesA, ColumnsT, MigrateFun);
+ false ->
+ ignored
+ end.
migrate_odbc2(Host, Tables, OldTable, OldTables, OldColumns, OldColumnsAll, OldTablesA, ColumnsT, MigrateFun)
when ColumnsT == OldColumnsAll ->
@@ -236,3 +241,10 @@ odbc_table_columns_t(Table) ->
Columns2
end.
+is_table_exists(Table, odbc) ->
+ case catch ejabberd_odbc:sql_query_t("SELECT COUNT(*) FROM " ++ Table) of
+ {selected, _, _} ->
+ true;
+ _ ->
+ false
+ end.