sql >> Databasteknik >  >> RDS >> Mysql

Kan du automatiskt skapa en mysqldump-fil som inte upprätthåller begränsningar för främmande nyckel?

mysqldump kommandot ingår i MySQL sedan version 4.1.1 som standard producerar ett skript som stänger av kontrollen av främmande nyckel. Följande rad finns nära toppen av dumpfilen:

/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40014 ... */ syntax är en villkorlig kommentar som kommer att köras på MySQL version 4.0.14 och senare. Den gamla inställningen för kontroll av främmande nyckel återställs mot slutet av dumpfilen:

/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;

Observera att de villkorliga kommentarerna tolkas av klienten (istället för servern). Om du laddar dumpfilen med en klient som inte stöder dem, kommer kontroller av främmande nyckel inte att inaktiveras och du kan stöta på fel. För bästa resultat föreslår jag att du laddar dumpfiler med hjälp av den officiella mysql kommandoradsklienten:

mysql -hserver -uuser -p database < dumpfile.sql

Det är också värt att notera att om mysqldump körs med --compact alternativet, då utelämnas kommandona för att inaktivera och återaktivera kontroller av främmande nyckel från dumpfilen.



  1. Hur får man mysqli att kasta undantag med MYSQLI_REPORT_STRICT?

  2. Allvarligt fel:Vänligen läs avsnittet Säkerhet i manualen för att ta reda på hur du kör mysqld som root

  3. PHP PDO MySQL rullningsbar markör fungerar inte

  4. Hur man ersätter Djangos primärnyckel med ett annat heltal som är unikt för den tabellen