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