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 / collation_connection / Database Collation 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存储过程导出的主要内容,如果未能解决你的问题,请参考以下文章