我的 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/

10-11 01:22