mysql 导出函数、存储过程


导出函数、存储过程

  • mysqldump -u root -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关闭。代码为

  • mysqldump -u root -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],在它下面添加这样一行(需重启mysql):

log-bin-trust-function-creators=1

  • 解决方法二
    命令行执行:
    set global log_bin_trust_function_creators=1;

  • 导入语句:
    mysql -uroot -p 数据库 < 导出的.sql文件
    或在命令行执行
    use 数据库名
    source /root/导出的.sql文件

————————————————
参考文章来源


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM