MySQL存储过程导出

3

我曾用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'),

Thank you

1个回答

2

对于Create Procedure,它返回(null)。不确定原因。 - user1359575
“Create Procedure” 是否 确实NULL?它不仅仅是包含换行符,以至于其内容在客户端程序中无法查看吗?也许可以尝试使用 SHOW PROCEDURE CODE 命令? - eggyal
是的,我已经检查了DBVisualizer和phpmyadmin,两者都返回NULL。对于SHOW PROCEDURE CODE,我得到了一个语法错误,针对的是SHOW PROCEDURE CODE sp_sample_name。 - user1359575
我建议托管支持团队按照此处所示的方式更新DEFINER值https://dev59.com/BnA75IYBdhLWcg3wm6Uj,但他们拒绝这样做。 - user1359575
看起来 http://stackoverflow.com/a/1084309/623041 是你的问题所在。你有主机的 shell 访问权限吗(我假设你无法使用具有 SUPER 权限的用户连接到 MySQL)? - eggyal
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接