我使用Elasticbeanstalk(和MySQL RDS)作为我的客户端应用程序,EC2作为实用程序服务器使所有单个客户端数据库保持最新。因为Elasticbeanstalk在文件方面很狡猾,除非我使用S3,我认为最好使用仅限数据库的解决方案。我的目标是创建每个客户端数据库的校验和,并跟踪预期校验和的运行历史记录,以了解何时更新。
我的问题是:什么是轻松确定生产模式与MySQL中已安装模式匹配的最佳方法?
我写了这个查询来处理它,但是这样做有什么陷阱吗?
SELECT MD5(GROUP_CONCAT(
COALESCE(TABLE_NAME, ''),
COALESCE(COLUMN_NAME, ''),
COALESCE(ORDINAL_POSITION, ''),
COALESCE(COLUMN_DEFAULT, ''),
COALESCE(IS_NULLABLE, ''),
COALESCE(DATA_TYPE, ''),
COALESCE(CHARACTER_MAXIMUM_LENGTH, ''),
COALESCE(CHARACTER_SET_NAME, ''),
COALESCE(COLLATION_NAME, ''),
COALESCE(COLUMN_TYPE, ''),
COALESCE(COLUMN_KEY, ''))),
SHA1(GROUP_CONCAT(
COALESCE(TABLE_NAME, ''),
COALESCE(COLUMN_NAME, ''),
COALESCE(ORDINAL_POSITION, ''),
COALESCE(COLUMN_DEFAULT, ''),
COALESCE(IS_NULLABLE, ''),
COALESCE(DATA_TYPE, ''),
COALESCE(CHARACTER_MAXIMUM_LENGTH, ''),
COALESCE(CHARACTER_SET_NAME, ''),
COALESCE(COLLATION_NAME, ''),
COALESCE(COLUMN_TYPE, ''),
COALESCE(COLUMN_KEY, '')))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE();