我按照这个链接,但功能仍然不会导入我的测试数据库。
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
答案 0 :(得分:1)
可能的原因是用户dev
在db
上拥有某些权限(足以在mysqldump
尝试连接时失败),但没有{获取函数定义所需的{1}}。尝试运行
SELECT ON mysql.proc
(或定义的主机GRANT SELECT ON mysql.proc to dev@localhost
,而不是dev
)。