Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # check_constraints.sh
- # --------------------
- # Check foreign key contraints on MySQL database.
- #
- # Written by Frank Vanderhallen, licensed under GPL.
- if [ -z "$1" ]
- then
- echo "\nUsage:\n\t./`uname $0` <database> [-h <host>] [-u user] [-p <passwd>]\n"
- exit
- fi
- CONSTRAINTS=`mysqldump $* | grep "CREATE\|CONSTRAINT" | sed 's/ /+/g'`
- for c in $CONSTRAINTS
- do
- if [ "`echo $c | cut -d '+' -f 3`" = "CONSTRAINT" ]
- then
- CONSTRAINT=`echo $c | cut -d '+' -f 4 | tr -d '\`'`
- CHILD_KEY=`echo $c | cut -d '+' -f 7 | tr -d '()\`,'`
- PARENT_TABLE=`echo $c | cut -d '+' -f 9 | tr -d '\`'`
- PARENT_KEY=`echo $c | cut -d '+' -f 10 | tr -d '()\`,'`
- QUERY="select c.$CHILD_KEY from $CHILD_TABLE as c left join $PARENT_TABLE as p on p.$PARENT_KEY=c.$CHILD_KEY where c.$CHILD_KEY is not null and p.$PARENT_KEY is null;"
- echo "Checking table '$CHILD_TABLE' constraint '$CONSTRAINT'"
- mysql -verbose $* -e "$QUERY"
- else
- CHILD_TABLE=`echo $c | cut -d '+' -f 3`
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement