¿Cómo deshabilitar la verificación de clave externa?
realtebo
7
Puede usar MySQL para escribirlo y ejecutarlo:
Esto convertirá cada tabla InnoDB en la base dbnamede datos a 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}
Esto convertirá todas las tablas de InnoDB a 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 no desea que la conversión de las tablas se replique en esclavos, simplemente ponga SET SQL_LOG_BIN=0;como primera línea. De esa manera, puede probar la conversión en una configuración Maestro / Esclavo convirtiendo solo el Esclavo primero y luego el Maestro después.
Esto convertirá todas las tablas de InnoDB en la base dbnamede datos a MyISAM y no se replicará a otros servidores
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}
Esto convertirá cada tabla de InnoDB a MyISAM y no se replicará a otros servidores
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}
Yendo desde MyIsam2InnoDB en el mundo real, probablemente querrás un SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; lugar para evitar el no_zero_date desde mysql 5.7 - Fuente stackoverflow.com/questions/9192027/…
Antony Gibbs
Yendo desde MyIsam2InnoDB en el mundo real, probablemente querrás un SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; lugar para evitar el no_zero_date desde mysql 5.7 - Fuente stackoverflow.com/questions/9192027/…
Antony Gibbs
0
Para aquellos que todavía tienen este problema, pueden seguir esta forma de hacerlo, encontré esta respuesta en un sitio web. Me ayuda mucho:
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
Actualización usernamey db_namevalores con sus propios valores.
Afet ejecutar el script, se guardará un archivo con el nombre: alter.sql
Abrir el archivo y ejecutar el contenido de su phpmyadmino de mysqllínea de comandos.
Respuestas:
No conozco ninguna manera de hacer esto en mysql, pero un simple script de shell hará el trabajo:
fuente
Puede usar MySQL para escribirlo y ejecutarlo:
Esto convertirá cada tabla InnoDB en la base
dbname
de datos a MyISAMEsto convertirá todas las tablas de InnoDB a MyISAM
Si no desea que la conversión de las tablas se replique en esclavos, simplemente ponga
SET SQL_LOG_BIN=0;
como primera línea. De esa manera, puede probar la conversión en una configuración Maestro / Esclavo convirtiendo solo el Esclavo primero y luego el Maestro después.Esto convertirá todas las tablas de InnoDB en la base
dbname
de datos a MyISAM y no se replicará a otros servidoresEsto convertirá cada tabla de InnoDB a MyISAM y no se replicará a otros servidores
Darle una oportunidad !!!
fuente
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
lugar para evitar el no_zero_date desde mysql 5.7 - Fuente stackoverflow.com/questions/9192027/…SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
lugar para evitar el no_zero_date desde mysql 5.7 - Fuente stackoverflow.com/questions/9192027/…Para aquellos que todavía tienen este problema, pueden seguir esta forma de hacerlo, encontré esta respuesta en un sitio web. Me ayuda mucho:
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
Actualización
username
ydb_name
valores con sus propios valores.Afet ejecutar el script, se guardará un archivo con el nombre:
alter.sql
Abrir el archivo y ejecutar el contenido de suphpmyadmin
o demysql
línea de comandos.¡Salud!
fuente
Prefiero frases para este tipo de cosas. Esta es una versión de una sola línea de la respuesta más aceptada.
Esto funciona si tiene configurado su nombre de usuario y contraseña de MySQL
~/.my.cnf
.fuente