将mysqldump函数导入mysql数据库的正确方法是什么?

时间:2017-08-24 23:34:41

标签: mysql mariadb

我按照这个链接,但功能仍然不会导入我的测试数据库。

http://www.ducea.com/2007/07/25/dumping-mysql-stored-procedures-functions-and-triggers/

这样做的正确方法是什么?我还以为我曾经做过一次完整的数据库转储,然后他们也没有进入测试数据库。

这是我用于函数的命令:

mysqldump --routines=true --no-create-info --no-data --no-create-db --skip-opt --skip-triggers db > outputfile.sql -u dev -p

编辑:

查看转储文件,我没有看到任何看起来像函数的东西(只有四个,并且名称中有“token”)。

-- mySQL dump 10.14  Distrib 5.5.50-MariaDB, for Linux (x86_64)
--
-- Host: localhost    Database: db
-- ------------------------------------------------------
-- Server version       5.5.50-MariaDB
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!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 'db'
--
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2017-08-24 16:29:45

这样可以解释这一点。根据命令他们不在那里的任何理由?

另外,我用来导入的内容:

sudo mysql test_db < outputfile.sql -u dev -p

1 个答案:

答案 0 :(得分:1)

可能的原因是用户devdb上拥有某些权限(足以在mysqldump尝试连接时失败),但没有{获取函数定义所需的{1}}。尝试运行

SELECT ON mysql.proc

(或定义的主机GRANT SELECT ON mysql.proc to dev@localhost ,而不是dev)。