我想通过删除所有表来清空 phpmyadmin 中的 mysql 数据库,但这会产生外键错误。
一种解决方案是以正确的顺序删除表以防止外键错误,但是有没有办法在 phpmyadmin 中自动执行此操作?例如清空数据库的功能?
我的回答有点晚了,但很简单而且有效:
您现在有一个空数据库(该数据库仍然存在,并且数据库视图显示“数据库中找不到表”)。
数据库清理是什么意思-
在第一种情况下,更好的选择是删除数据库并重新创建它。
或者,如果由于任何特定原因您不想删除数据库(这样您将丢失所有触发器/视图等),那么首先通过 showtables 命令获取要删除的表并准备“drop table table_name;” excel 中的脚本或通过以下命令并通过 phpmyadmin 执行。
SELECT CONCAT("drop table ",table_schema,".",table_name,";") FROM information_schema.TABLES WHERE table_type='BASE TABLE' AND table_schema='my_db';
在第二种情况下,如果您只想清除数据,则可以通过以下命令准备截断脚本,然后通过 phpmyadmin 执行它-
SELECT CONCAT("截断表",table_schema,".",table_name,";") FROM information_schema.TABLES WHERE table_type='BASE TABLE' AND table_schema='my_db';
注意:在执行 drop 或 truncate 命令之前执行
set foreign_key_checks=0;
,执行后执行 set foreign_key_checks=1;
,以避免外键相关问题。
您可以在服务器控制台执行以下命令。
mysql -uroot -p<pass> -Nse 'show tables' database1 | while read table; do mysql -uroot -p<pass> database1 -e "drop table $table"; done
或
mysql -uroot -p<pass> -Nse 'show tables' database1 | while read table; do mysql -uroot -p<pass> database1 -e "truncate table $table"; done