1

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

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

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

由于ALTER是导致隐含的语句之一,因此COMMIT我认为不可能将其作为INSERTor之后的触发器的一部分UPDATE

4

3 回答 3

0

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

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

于 2012-04-26T12:27:53.310 回答
0

MySQL 代理可能是这里的解决方案。

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

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

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

于 2012-04-26T12:38:04.007 回答
0

请参阅http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html上的 SET NAME

于 2012-04-26T12:44:23.590 回答