在部署某學院的網站時,發現一個錯誤:
?
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
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
