diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl index 84b85b061..804456e1c 100644 --- a/src/ejabberd_admin.erl +++ b/src/ejabberd_admin.erl @@ -317,7 +317,8 @@ get_commands_spec() -> #ejabberd_commands{name = export2sql, tags = [mnesia], desc = "Export virtual host information from Mnesia tables to SQL file", - longdesc = "Configure the modules to use SQL, then call this command.", + longdesc = "Configure the modules to use SQL, then call this command. " + "After correct export, check 'delete_mnesia' too.", module = ejd2sql, function = export, args_desc = ["Vhost", "Full path to the destination SQL file"], args_example = ["example.com", "/var/lib/ejabberd/example.com.sql"], diff --git a/src/ejd2sql.erl b/src/ejd2sql.erl index f5c87ffcd..ad0cc5e88 100644 --- a/src/ejd2sql.erl +++ b/src/ejd2sql.erl @@ -104,12 +104,17 @@ delete(Server) -> delete(Server, Module) end, Modules). -delete(Server, Module) -> +delete(Server, Module1) -> LServer = jid:nameprep(iolist_to_binary(Server)), + Module = case Module1 of + mod_pubsub -> pubsub_db; + _ -> Module1 + end, + SQLMod = gen_mod:db_mod(sql, Module), lists:foreach( fun({Table, ConvertFun}) -> delete(LServer, Table, ConvertFun) - end, Module:export(Server)). + end, SQLMod:export(Server)). import(Server, Dir, ToType) -> lists:foreach( @@ -192,7 +197,7 @@ output(_LServer, Table, Fd, SQLs) -> delete(LServer, Table, ConvertFun) -> F = fun () -> mnesia:write_lock_table(Table), - {_N, SQLs} = + {_N, _SQLs} = mnesia:foldl( fun(R, Acc) -> case ConvertFun(LServer, R) of @@ -203,8 +208,7 @@ delete(LServer, Table, ConvertFun) -> Acc end end, - {0, []}, Table), - delete(LServer, Table, SQLs) + {0, []}, Table) end, mnesia:transaction(F).