Stephen,

in <= 4.0, you should put

SET FOREIGN_KEY_CHECKS=0;

at the start of the dump file.

In 4.1, mysqldump knows to add to a dump file a line

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0*/

to disable foreign key checks in the dump file.

Best regards,

Heikki Tuuri
Innobase Oy
Foreign keys, transactions, and row level locking for MySQL
InnoDB Hot Backup - a hot backup tool for InnoDB which also backs up MyISAM
tables
http://www.innodb.com/order.php

Register now for the 2004 MySQL Users Conference!
http://www.mysql.com/events/uc2004/index.html

----- Original Message ----- 
From: "Stephen Cuppett" <[EMAIL PROTECTED]>
Newsgroups: mailing.database.myodbc
Sent: Friday, March 05, 2004 8:11 PM
Subject: MySQL Dump Command Does Not Consider Foreign Key Dependencies


> >Description:
>         The current mysqldump utility does an alphabetical dump of the
>         tables as well as a row by row dump of the data following each
>         table declaration.  This is adequate enough for most
>         databases; however, if there are strict foreign key
>         constraints, the ordering will not always be conducive to
>         utilizing mysqldump output to restore databases causing major
>         headaches in order to restore when the table structures are
>         sophisticated and/or if there is considerable BLOB output in
>         the output.
>  >How-To-Repeat:
>         I apologize for any syntactical mistakes, but I'm sure you can
>         get the idea.  Consider two tables: a,b.  After creating
>         these tables, defining several columns, and then implementing
>         foreign keys, if "a" has a
>         foreign key constraint on yet-to-be-created "b" in dump output,
>         then "a" will fail to create.  Further, even if "a" were to be
>         created, data input into "a" would fail without the supporting
>         rows in "b".
>  >Fix:
>         Ultimately, a dependency graph needs to be considered before
>         dumping in order to dump the tables and data in an order that
>         will allow the output to be used to restore the data rather
>         than alphabetical.  However, if we assume that the data
>         existing now is in a normal state (simplified to mean,
>         fulfills foreign key constraints), then we could dump
>         structure and data in same order, but suppress details about
>         the foreign key constraints and have those appended to the
>         dump output as ALTER TABLE statements.  I believe the latter
>         to be a much simpler fix and would eliminate this problem.
>
>  >Submitter-Id:  <submitter ID>
>  >Originator:    Stephen Cuppett
>  >Organization:
>
>  >MySQL support: none
>  >Synopsis:      Dump Data ABC order Inconsiderate of Foreign Key
> Constraints
>  >Severity:      serious
>  >Priority:      medium
>  >Category:      mysql
>  >Class:         change-request
>  >Release:       mysql-4.0.17-standard (Official MySQL RPM)
>
>  >C compiler:    2.95.3
>  >C++ compiler:  2.95.3
>  >Environment:
>
> System: Linux cuppett1 2.4.21-192-smp #1 SMP Wed Feb 18 19:31:29 UTC
> 2004 i686 athlon i386 GNU/Linux
> Architecture: i686
>
> Some paths:  /usr/bin/perl /usr/bin/make /usr/bin/gmake /usr/bin/gcc
> /usr/bin/cc
> GCC: Reading specs from /usr/lib/gcc-lib/i586-suse-linux/3.3.1/specs
> Configured with: ../configure --enable-threads=posix --prefix=/usr
> --with-local-prefix=/usr/local --infodir=/usr/share/info
> --mandir=/usr/share/man --libdir=/usr/lib
> --enable-languages=c,c++,f77,objc,java,ada --disable-checking
> --enable-libgcj --with-gxx-include-dir=/usr/include/g++
> --with-slibdir=/lib --with-system-zlib --enable-shared
> --enable-__cxa_atexit i586-suse-linux
> Thread model: posix
> gcc version 3.3.1 (SuSE Linux)
> Compilation info: CC='gcc'  CFLAGS='-O2 -mcpu=i486
> -fno-strength-reduce'  CXX='g++'  CXXFLAGS='-O2 -mcpu=i486
> -fno-strength-reduce                -felide-constructors -fno-exceptions
> -fno-rtti                  '  LDFLAGS=''  ASFLAGS=''
> LIBC:
> -rwxr-xr-x    1 root     root      1469811 2003-09-23 19:05 /lib/libc.so.6
> -rw-r--r--    1 root     root     13553180 2003-09-23 12:04
/usr/lib/libc.a
> -rw-r--r--    1 root     root          204 2003-09-23 12:04
/usr/lib/libc.so
> -rw-r--r--    1 root     root       982008 2003-09-23 14:29
> /usr/lib/libc-client.a
> lrwxrwxrwx    1 root     root           20 2004-01-08 19:04
> /usr/lib/libc-client.so -> libc-client.so.2002d
> -rwxr-xr-x    1 root     root       770436 2003-09-23 14:29
> /usr/lib/libc-client.so.2002d
> Configure command: ./configure '--disable-shared'
> '--with-mysqld-ldflags=-all-static' '--with-client-ldflags=-all-static'
> '--with-server-suffix=-standard' '--without-embedded-server'
> '--without-berkeley-db' '--with-innodb' '--without-vio'
> '--without-openssl' '--enable-assembler' '--enable-local-infile'
> '--with-mysqld-user=mysql'
> '--with-unix-socket-path=/var/lib/mysql/mysql.sock' '--prefix=/'
> '--with-extra-charsets=complex' '--exec-prefix=/usr'
> '--libexecdir=/usr/sbin' '--libdir=/usr/lib' '--sysconfdir=/etc'
> '--datadir=/usr/share' '--localstatedir=/var/lib/mysql'
> '--infodir=/usr/share/info' '--includedir=/usr/include'
> '--mandir=/usr/share/man' '--enable-thread-safe-client'
> '--with-comment=Official MySQL RPM' 'CC=' 'CFLAGS=-O2 -mcpu=i486
> -fno-strength-reduce' 'CXXFLAGS=-O2 -mcpu=i486
> -fno-strength-reduce            -felide-constructors -fno-exceptions
> -fno-rtti                  ' 'CXX='
>
>
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:
http://lists.mysql.com/[EMAIL PROTECTED]
>


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to