diff --git a/s4-migrate.sh b/s4-migrate.sh index 136d238..073daf3 100755 --- a/s4-migrate.sh +++ b/s4-migrate.sh @@ -140,8 +140,8 @@ for arid in `cat $tmpd/repl.art.rowid`; do newval=`query "SELECT hex(val) FROM dst.article_s WHERE rowid=$arid;" \ | unhexize | sed -Ef "$sedfile" | hexize` - echo "UPDATE dst.article_s SET val=X'$newval' WHERE rowid=$arid;" >>$sql - done + echo "UPDATE dst.article_s SET val=X'$newval' WHERE rowid=$arid;" + done >$sql # Rewrite blog-links in the group # Create sed script sedfile2=${sedfile}2 @@ -166,16 +166,25 @@ | unhexize | sed -Ef "$sedfile2" | hexize` echo "UPDATE dst.article_s SET val=X'$newval' WHERE rowid=$arid;" >>$sql done - if query ".read $sql"; then - echo "Success!!" + if [ -z "`query \".read $sql\"`" ]; then query <<-EOF DELETE FROM main.article WHERE blogid IN ($blogs); DELETE FROM main.blog WHERE id IN ($blogs); DELETE FROM main.grp WHERE rowid=$grid; EOF - query "END;" - clean-orphaned - echo "Done." + s=`query "SELECT * FROM main.grp WHERE rowid=$grid;"` + if [ -z "$s" ]; then + echo "Success!!" + query "END;" + clean-orphaned + echo "Done." + else + echo Removal failed + echo "現行グループ消去ができませんでした。" + echo "書き込みの多いグループの場合は空いている時間帯に試して下さい。" + query "ROLLBACK;" + failure=-2 + fi else failure=-1 echo "Replacing failed."