提问人:VRA 提问时间:11/11/2023 更新时间:11/11/2023 访问量:19
有没有办法在不执行/调用MySQL存储过程中检查不正确的表名(或别名)?
Is there a way to check incorrect table names (or aliases) in MySQL Stored Procedures without executing/calling them?
问:
背景:
我必须从 MySQL 5.7 迁移到 MySQL 8。我无权访问(设置为 0)。我有 ~200 个存储过程,其中查询/DML 语句中的表名(例如)及其别名(例如)不区分大小写。lower_case_table_names
my_table_1
mt1
因此,我使用如下语句存储过程: .在 MySQL 5.7 中,这是一个有效的语句;但在 MySQL 8 中则不然。SELECT mt1.column1, MT1.column2 from my_table_1 MT1 where MT1.column3=100;
我即将开始一个项目,以使用正确的大小写更新所有存储过程。
问题:
- 有没有简单的方法可以实现此更新?
- 表名没有任何前缀/后缀来唯一标识它们。例如,可以是表名,而不是 .
school
t_school
- 此外,别名是非常通用的(例如,等)
s
c
- 表名没有任何前缀/后缀来唯一标识它们。例如,可以是表名,而不是 .
- 即使我完成了此任务,有没有办法在不执行每个过程的情况下检查更新是否正确完成?
- 我注意到查询在独立运行时被标记为错误,但在作为存储过程的一部分进行编译时则不会。例如,如果表名在作为独立查询执行时失败,但如果它是存储过程的一部分,则该过程将成功编译(即其 DDL 已成功更新)。但是调用该过程会导致错误。
my_table_1
SELECT * from MY_TABLE_1
- 我注意到查询在独立运行时被标记为错误,但在作为存储过程的一部分进行编译时则不会。例如,如果表名在作为独立查询执行时失败,但如果它是存储过程的一部分,则该过程将成功编译(即其 DDL 已成功更新)。但是调用该过程会导致错误。
答: 暂无答案
评论
lower_case_table_name