确保MySQL表格charset&整理

时间:2012-04-26 12:22:47

标签: mysql

情况:有一个由应用程序A管理的表。应用程序A在一天中在表中插入和更新数据。每周一次,DROP表,重新创建它,并插入所有数据。

问题:应用程序A将表创建为utf8。依赖于此表的应用程序B要求它为ascii_bin。我没有设计任何一个应用程序,也没有修改他们的要求。

需要什么:确保表格位于ascii_bin的方法。我考虑编写一个脚本并通过CRON运行它,它将检查当前的字符集并在需要时设置它。有没有更好的方法来实现这一目标?

由于ALTER是导致隐式COMMIT的语句之一,我不相信在INSERT或{{1}之后可以将其作为触发器的一部分来执行}。

3 个答案:

答案 0 :(得分:0)

您可以将ascii_bin设置为数据库架构的默认字符集。然后,除非您明确指定另一个字符集,否则所有创建的表在创建时都将具有此字符集。

请参阅有关如何设置默认字符集的MySQL文档:http://dev.mysql.com/doc/refman/5.0/en/charset-database.html

答案 1 :(得分:0)

MySQL proxy可能是一个解决方案。

您可以在通过代理时重写create语句。

或者,也许您可​​以从应用程序A中删除权限,以便它不会删除该表。

基本上忽略不进行任何更改的ALTER语句。因此,如果转换为ascii_bin多次运行,则服务器上的工作量不会太大。因此,将它放在cron中,或者Applicatio B调用的现有存储过程,或其他聪明的东西,都不是那么糟糕。

答案 2 :(得分:0)