java 不能执行mysql存储过程_java无法执行mysql中的函数及存储过程的.sql备份文件...
需求:用java程序執行【包含數據&結構&函數&存儲過程】的.sql備份文件
問題記錄:
1.在執行完insert類型的語句后,中文內容會顯示亂碼。
解決:將mysql參數中character_set_server參數更改為utf8(原值為latin1)
該參數為服務器安裝時指定的默認編碼格式,這個變量建議由系統自己管理,不要人為定義。
2.MySQL This function has none of DETERMINISTIC, NO SQL...錯誤1418.
SET GLOBAL log_bin_trust_function_creators = 1;
原因:在執行創建函數的sql時,當mysql啟動了bin-log并且存在主從復制情況下,CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE,ALTER FUNCTION,CALL, DROP PROCEDURE, DROP FUNCTION等語句都會被寫進二進制日志,然后在從服務器上執行,當創建function的sql語句沒有聲明創建的參數類型時,可能會造成恢復的數據與主服務器數據不同,所以為了解決這個問題,MySQL強制要求,在主服務器上,除非子程序被聲明為確定性的或者不更改數據,否則創建或者替換子程序將被拒絕。
DETERMINISTIC 不確定的
NO SQL 沒有SQl語句,當然也不會修改數據
READS SQL DATA 只是讀取數據,當然也不會修改數據
MODIFIES SQL DATA 要修改數據
CONTAINS SQL 包含了SQL語句
回歸正題:解決上述mysql問題后依舊無法執行創建函數和存儲過程的sql語句。
相關報錯信息如下:
舉例列出創建function的sql:
解決辦法:將sql文件中 創建函數以及存儲過程這部分的語句中,所有的“DELIMITER ;;”和所有的注釋,全部刪除掉。
之后可正常執行~~
總結
以上是生活随笔為你收集整理的java 不能执行mysql存储过程_java无法执行mysql中的函数及存储过程的.sql备份文件...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消息称多个跨国公司高管计划访问中国,包括
- 下一篇: mysql 解除安全模式