2017-08-24 47 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顯示授權;' –

相關問題