此查询是否足以校验数据库?

时间:2015-11-12 21:31:28

标签: mysql mysqldump

我使用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();

0 个答案:

没有答案