From ced1fbb02fd89c337e2c303af55b2f47a1c10e6b Mon Sep 17 00:00:00 2001 From: mirocow Date: Mon, 17 Oct 2016 17:30:58 +0400 Subject: [PATCH] Fix dump with geospatial fields --- backup_db.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/backup_db.sh b/backup_db.sh index da0a04a..d956ca3 100755 --- a/backup_db.sh +++ b/backup_db.sh @@ -126,9 +126,16 @@ backup() if [ $(echo $data_tables_exclude_expression| grep $TABLE) ]; then f_log "Exclude data from table $TABLE" - mysqldump --defaults-file=$CONFIG_FILE --no-data --add-drop-table --tab=$DST/$DATABASE/ $DATABASE $TABLE 2>> $DST/$DATABASE/error.log + mysqldump --defaults-file=$CONFIG_FILE --no-data --add-drop-table --tab=$DST/$DATABASE/ $DATABASE $TABLE 2>> $DST/$DATABASE/error.log else - mysqldump --defaults-file=$CONFIG_FILE --default-character-set=utf8 --add-drop-table --quick --tab=$DST/$DATABASE/ $DATABASE $TABLE 2>> $DST/$DATABASE/error.log + # If fields has geospatial types + checkGeo="mysql --defaults-extra-file=$CONFIG_FILE -B $DATABASE -e \"SHOW COLUMNS FROM $TABLE WHERE Type IN ('point', 'polygon', 'geometry', 'linestring')\"" + hasGeo=$(eval $checkGeo) + if [ ! -z "$hasGeo" ]; then + mysqldump --defaults-file=$CONFIG_FILE --flush-logs --default-character-set=utf8 --add-drop-table --quick --result-file=$DST/$DATABASE/$TABLE.sql $DATABASE $TABLE 2>> $DST/$DATABASE/error.log + else + mysqldump --defaults-file=$CONFIG_FILE --flush-logs --default-character-set=utf8 --add-drop-table --quick --tab=$DST/$DATABASE/ $DATABASE $TABLE 2>> $DST/$DATABASE/error.log + fi fi if [ -f "$DST/$DATABASE/$TABLE.sql" ]; then