2017-08-24 49 views
0

我跟着这个链接,但功能仍然不会导入到我的测试数据库。mysqldump函数导入mysql数据库的正确方法是什么?

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

编辑:

望着转储文件,我没有看到任何看起来像功能(只有四个,他们在名称中有“标记”)。

-- 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 @[email protected]@TIME_ZONE */; 
/*!40103 SET TIME_ZONE='+00:00' */; 
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */; 

-- 
-- Dumping routines for database 'db' 
-- 
/*!40103 SET [email protected]_TIME_ZONE */; 

/*!40101 SET [email protected]_SQL_MODE */; 
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */; 
/*!40111 SET [email protected]_SQL_NOTES */; 

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

这样就可以解释这一点。基于命令他们不会在那里的任何理由?

而且,我使用导入的内容:

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

+0

我看到那个命令没有错。你检查过这个文件吗?它是否包含例程?除了导出命令之外,导入到测试数据库的另一个原因是不能正常工作:导入命令不正确。所以也许还要加上那部分。 – Solarflare

+0

良好的呼叫...更新。 – sockpuppet

+0

我没有看到'true'是否需要在文档中添加:'--routines = true'?我想知道这是否会使它成为未知参数,并且可能是为什么没有输出。请改用这个命令:'mysqldump - 例程 - 无创建信息 - 无数据 - 无创建数据库 - 禁用 - 选项 - 禁用触发器数据库>输出文件.sql -u dev -p' –

回答

1

一个可能的原因是用户devdb一些特权(不够抛出一个错误,当mysqldump尝试连接到它),但没有SELECT ON mysql.proc这是需要获取函数定义。尝试运行

GRANT SELECT ON mysql.proc to [email protected] 

(或任何主机dev与定义,而不是localhost)。

+0

并为dev @ localhost显示授权;' –

相关问题