Mysql存储过程导出

Posted

技术标签:

【中文标题】Mysql存储过程导出【英文标题】:Mysql stored procedures export 【发布时间】:2012-05-08 12:08:16 【问题描述】:

我已经使用 username@XX.XX.XX.XX 作为 DEFINER 值创建了所有存储过程。现在,由于我更改了我的位置,因此我无法查看或导出代码的 IP 地址。

我的代码在共享主机上,支持团队不想就此事提供帮助。

关于如何获取代码的任何想法?即使是完整的数据库导出也不包含存储过程代码。它只有插入到 ROUTINES 表中的数据

INSERT INTO `ROUTINES` (`SPECIFIC_NAME`, `ROUTINE_CATALOG`, `ROUTINE_SCHEMA`,
    `ROUTINE_NAME`, `ROUTINE_TYPE`, `DTD_IDENTIFIER`,
    `ROUTINE_BODY`, `ROUTINE_DEFINITION`, `EXTERNAL_NAME`, `EXTERNAL_LANGUAGE`,
    `PARAMETER_STYLE`, `IS_DETERMINISTIC`, `SQL_DATA_ACCESS`, `SQL_PATH`,
    `SECURITY_TYPE`, `CREATED`, `LAST_ALTERED`, `SQL_MODE`, `ROUTINE_COMMENT`,
    `DEFINER`, `CHARACTER_SET_CLIENT`, `COLLATION_CONNECTION`,
    `DATABASE_COLLATION`)
VALUES ('sp_sample_name', NULL, 'XXX',
    'sp_sample_name', 'PROCEDURE', NULL,
    'SQL', NULL, NULL, NULL,
    'SQL', 'NO', 'CONTAINS SQL', NULL,
    'DEFINER', '2012-03-26 01:01:14', '2012-03-26 01:01:14', 'STRICT_TRANS_TABLES',
    '', 'username@XX.XX.XX.XX', 'latin1', 'latin1_swedish_ci',
    'latin1_swedish_ci'),

谢谢

【问题讨论】:

【参考方案1】:

您可以拨打SHOW CREATE PROCEDURE

【讨论】:

如果我创建了一个新过程,它会这样做,但在这种情况下它不会返回代码。它返回如下:Procedure / sql_mode / Create Procedure / charset_set_client / collat​​ion_connection / Database Collat​​ion sp_sample_name STRICT_TRANS_TABLES (null) latin1 latin1_swedish_ci latin1_swedish_ci 它为创建过程返回 (null)。不知道为什么。 Create Procedure 肯定 NULL?这不仅仅是因为它包含换行符,因此它的内容在您的客户端程序中是隐藏的?也许试试SHOW PROCEDURE CODE 是的,我检查了 DBVisualizer 和 phpmyadmin,都返回 NULL。对于 SHOW PROCEDURE CODE,我得到 SHOW PROCEDURE CODE sp_sample_name 的语法错误。 我已建议托管支持团队更新 DEFINER 值,如***.com/questions/3206820/… 所示,但他们拒绝这样做。

以上是关于Mysql存储过程导出的主要内容,如果未能解决你的问题,请参考以下文章

Mysql导出所有存储过程,查找存储过程关键字

MYSQL 命令导出事件存储过程触发器

Oracle批量导出存储过程(保持每个存储过程独立)

MySQL 导出函数与存储过程

MySQL导出数据库数据库表结构存储过程及函数用

MySQL导出数据库数据库表结构存储过程及函数