comment désactiver la vérification des clés étrangères?
realtebo
7
Vous pouvez utiliser MySQL pour l'écrire et l'exécuter:
Cela convertira chaque table InnoDB de la base dbnamede données en MyISAM
CONVERT_SCRIPT=Convert_dbname_InnoDB_to_MyISAM.sql
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE table_schema='dbname' AND engine='InnoDB';" > ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
Cela convertira chaque table InnoDB en MyISAM
CONVERT_SCRIPT=Convert_InnoDB_to_MyISAM.sql
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE engine ='InnoDB';" > ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
Si vous ne souhaitez pas que la conversion des tables soit répliquée en esclaves, placez-la SET SQL_LOG_BIN=0;comme première ligne. De cette façon, vous pouvez tester la conversion dans une configuration maître / esclave en convertissant uniquement l'esclave d'abord, puis le maître plus tard.
Cela convertira chaque table InnoDB de la base dbnamede données en MyISAM et ne sera pas répliquée sur d'autres serveurs
CONVERT_SCRIPT=Convert_dbname_InnoDB_to_MyISAM.sql
echo "SET SQL_LOG_BIN=0;" > ${CONVERT_SCRIPT}
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE table_schema='dbname' AND engine='InnoDB';" >> ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
Cela convertira chaque table InnoDB en MyISAM et ne se répliquera pas sur d'autres serveurs
CONVERT_SCRIPT=Convert_InnoDB_to_MyISAM.sql
echo "SET SQL_LOG_BIN=0;" > ${CONVERT_SCRIPT}
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE engine ='InnoDB';" >> ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
En passant de MyIsam2InnoDB dans le monde réel, vous voudrez probablement SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; quelque part pour contourner la no_zero_date depuis mysql 5.7 - Source stackoverflow.com/questions/9192027/…
Antony Gibbs
En passant de MyIsam2InnoDB dans le monde réel, vous voudrez probablement SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; quelque part pour contourner la no_zero_date depuis mysql 5.7 - Source stackoverflow.com/questions/9192027/…
Antony Gibbs
0
Pour ceux qui ont toujours ce problème, vous pouvez suivre cette façon de le faire, j'ai trouvé cette réponse dans un site Web. Cela m'aide beaucoup:
shell> mysql -u username -p -e "SELECT concat('ALTER TABLE ', TABLE_NAME,' ENGINE=MYISAM;') FROM Information_schema.TABLES WHERE TABLE_SCHEMA = 'db_name' AND ENGINE = 'InnoDB' AND TABLE_TYPE = 'BASE TABLE'" | tail -n+2 >> alter.sql
Mise à jour usernameet db_namevaleurs avec vos propres valeurs.
Après l'exécution du script, il enregistrera un fichier sous son nom: alter.sql
ouvrez le fichier et exécutez le contenu sur votre ligne de commande phpmyadminou mysql.
Réponses:
Je ne connais aucun moyen de le faire dans mysql lui-même, mais un simple script shell fera le travail:
la source
Vous pouvez utiliser MySQL pour l'écrire et l'exécuter:
Cela convertira chaque table InnoDB de la base
dbname
de données en MyISAMCela convertira chaque table InnoDB en MyISAM
Si vous ne souhaitez pas que la conversion des tables soit répliquée en esclaves, placez-la
SET SQL_LOG_BIN=0;
comme première ligne. De cette façon, vous pouvez tester la conversion dans une configuration maître / esclave en convertissant uniquement l'esclave d'abord, puis le maître plus tard.Cela convertira chaque table InnoDB de la base
dbname
de données en MyISAM et ne sera pas répliquée sur d'autres serveursCela convertira chaque table InnoDB en MyISAM et ne se répliquera pas sur d'autres serveurs
Essaie !!!
la source
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
quelque part pour contourner la no_zero_date depuis mysql 5.7 - Source stackoverflow.com/questions/9192027/…SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
quelque part pour contourner la no_zero_date depuis mysql 5.7 - Source stackoverflow.com/questions/9192027/…Pour ceux qui ont toujours ce problème, vous pouvez suivre cette façon de le faire, j'ai trouvé cette réponse dans un site Web. Cela m'aide beaucoup:
shell> mysql -u username -p -e "SELECT concat('ALTER TABLE ', TABLE_NAME,' ENGINE=MYISAM;') FROM Information_schema.TABLES WHERE TABLE_SCHEMA = 'db_name' AND ENGINE = 'InnoDB' AND TABLE_TYPE = 'BASE TABLE'" | tail -n+2 >> alter.sql
Mise à jour
username
etdb_name
valeurs avec vos propres valeurs.Après l'exécution du script, il enregistrera un fichier sous son nom:
alter.sql
ouvrez le fichier et exécutez le contenu sur votre ligne de commandephpmyadmin
oumysql
.À votre santé!
la source
Je préfère les doublures pour ce type de trucs. Il s'agit d'une version à une ligne de la réponse la plus acceptée.
Cela fonctionne si vous avez défini votre nom d'utilisateur et votre mot de passe MySQL
~/.my.cnf
.la source