我需要执行一些脚本操作,可能需要一段时间(比如一分钟)。在这些操作开始之前,我会从MySQL数据库中获取一些措施,并且很重要的是在操作完成之前它们不会被改变。由于它属于一个相当老式但巨大的CMS,所以该数据库有几十个表格,而CMS用户有数十个选项来修改它。
我甚至不想在我的脚本运行期间更改任何东西,只需将其冻结即可。这不是转储或更新操作。但是应该为所有人保持表格的打开状态以供阅读,以防止连接主页的访问者出现错误。
如果在解锁数据库后触发了可能由其他CMS用户执行的数据库更改操作,那就太完美了,但如果它们失败了,我也不介意。
因此,我想在脚本开始时使用以下命令锁定表格:
另一个问题是,如果有人能够随时回答这个问题,我是否需要使用与CMS使用的MYSQL用户不同的用户来执行锁定/解锁操作。如果我理解正确的话,那么是的。
我甚至不想在我的脚本运行期间更改任何东西,只需将其冻结即可。这不是转储或更新操作。但是应该为所有人保持表格的打开状态以供阅读,以防止连接主页的访问者出现错误。
如果在解锁数据库后触发了可能由其他CMS用户执行的数据库更改操作,那就太完美了,但如果它们失败了,我也不介意。
因此,我想在脚本开始时使用以下命令锁定表格:
lock first_table write;
lock second_table write;
...
当我完成之后
unlock tables
我认为这应该能够完美实现我的目标。但是,我能不能不明确命名所有数据库中的表格,以使其更具有未来性?
以下肯定行不通:
lock tables (select TABLE_NAME from information_schema.tables
where table_schema='whatever') write;
另一个问题是,如果有人能够随时回答这个问题,我是否需要使用与CMS使用的MYSQL用户不同的用户来执行锁定/解锁操作。如果我理解正确的话,那么是的。