Création des tables manquantes durant les mises à jour

This commit is contained in:
Daniel Berteaud 2012-09-28 12:44:27 +02:00
parent 5464293b5b
commit abfc5ae5da
1 changed files with 9 additions and 1 deletions

View File

@ -5,11 +5,19 @@ my $pass = ${'ejabberd'}{'DbPassword'} || 'secret';
$OUT .= <<"END";
#! /bin/sh
SCHEMA=\$(rpm -ql ejabberd | grep mysql.sql)
if [ \! -d /var/lib/mysql/$db ]; then
# If database doesn't exists, create it and load the schema
/usr/bin/mysqladmin create $db
for SQL in \$(rpm -qd ejabberd-modules | grep mysql.sql); do
/usr/bin/mysql $db < \$SCHEMA
for SQL in \$(rpm -qd ejabberd-modules | grep mod_archive_odbc_mysql.sql); do
/usr/bin/mysql $db < \$SQL
done
else
# If database exists, first drop actual indexes
grep -Pi '^CREATE(\ UNIQUE)?\ INDEX' \$SCHEMA | sed -e 's/CREATE/DROP/g' -e 's/(.*)//g' -e 's/USING BTREE //g' -e 's/UNIQUE //g' | /usr/bin/mysql -f $db
# and update the database (create missing tables and indexes)
sed -r -e 's/CREATE TABLE (.*) \\(/CREATE TABLE IF NOT EXISTS \\1 \\(/gi' \$SCHEMA | /usr/bin/mysql -f $db
fi
/usr/bin/mysql <<EOF