程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql導出存儲過程

Mysql導出存儲過程

編輯:關於MYSQL數據庫
在部署某學院的網站時,發現一個錯誤:

  1 FUNCTION config_get does not exist.

  找到代碼一看,是conn.prepareCall("{call config_get(?,?,?)}");這一句出了錯。上網查了查,這是在調用存儲過程, 那麼config_get就是存儲過程名。到數據庫裡用show procedure status;看了看,一個存儲過程也沒有。也就是導數據庫時沒有導存儲過程。

  下面是導出存儲過程的代碼

  1 # MySQLdump -u 數據庫用戶名 -p -n -t -d -R 數據庫名 > 文件名

  其中,-d 表示--no-create-db, -n表示--no-data, -t表示--no-create-info, -R表示導出function和procedure。所以上述代碼表示僅僅導出函數和存儲過程,不導出表結構和數據。但是,這樣導出的內容裡,包含了trigger。再往MySQL中導入時就會出問題,錯誤如下:

  ERROR 1235 (42000) at line **: This version of MySQL doesn't yet support ‘multiple triggers with the same action time and event for one table’

  所以在導出時需要把trigger關閉。代碼為

  1 # MySQLdump -u 數據庫用戶名 -p -n -t -d -R --triggers=false 數據庫名 > 文件名

  這樣導入時,會出現新的問題:

  ErrorCode:1418

  This function has none of DETERMINISTIC, NOSQL, or READS SQL DATA inits declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

  解決方法是,在/etc/my.cnf中找到[MySQLd],在它下面添加這樣一行:

  1 log-bin-trust-function-creators=1

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved