我的 mysql 数据库中有两个程序,名为 test_proc1 和 test_proc2 。我想导出这两个程序的代码,但我发现导出的文件什么都不包含,我不知道为什么。下面是详细说明我的问题:
1. test_proc1 过程代码:
DELIMITER $$
USE `testmanagementb`$$
DROP PROCEDURE IF EXISTS `test_proc1`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_proc1`()
BEGIN
SELECT * FROM system_users;
END$$
DELIMITER ;
2. test_proc2 过程代码:
DELIMITER $$
USE `testmanagementb`$$
DROP PROCEDURE IF EXISTS `test_proc2`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_proc2`()
BEGIN
SELECT * FROM testcase_node;
END$$
DELIMITER ;
3.导出程序的命令(数据库名为testmanagementb):
mysqldump -u root -p -ntdR testmanagementb > procs.sql
4.导出结果如下:
-- MySQL dump 10.11
--
-- Host: localhost Database: testmanagementb
-- ------------------------------------------------------
-- Server version 5.0.51b-community-nt
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Dumping routines for database 'testmanagementb'
--
DELIMITER ;;
/*!50003 DROP PROCEDURE IF EXISTS `test_proc1` */;;
/*!50003 SET SESSION SQL_MODE=""*/;;
/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `test_proc1`()
BEGIN
select * from system_users;
END */;;
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE*/;;
/*!50003 DROP PROCEDURE IF EXISTS `test_proc2` */;;
/*!50003 SET SESSION SQL_MODE=""*/;;
/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `test_proc2`()
BEGIN
select * from testcase_node;
END */;;
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE*/;;
DELIMITER ;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2014-02-24 6:03:25
我的问题是: 为什么第 4 步导出的文件什么都不包含?我的导出命令有问题吗?
最佳答案
您可以使用 mysqldump
进行转储,无需表结构/数据和其他选项,以下是语法
mysqldump -uroot -p --routines --no-create-info --no-data --no-create-db world_copy > outputfile.sql
关于mysql - 如何转储 MySQL 中的所有函数和过程(不包括表)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21979981/