我需要计算数据库中表的确切行数(不使用INFORMATION_SCHEMA中的TABLE_ROWS) 我正在尝试从this post
执行脚本SET @tableSchema = 'Db_Warehouse';
SET SESSION group_concat_max_len = 10000000;
SET @rowCounts = (
SELECT GROUP_CONCAT(CONCAT('SELECT ''',TABLE_NAME,''', COUNT(*) FROM ', TABLE_NAME) SEPARATOR ' union all ')
FROM information_schema.tables WHERE table_schema = @tableSchema
);
PREPARE statement FROM @rowCounts;
EXECUTE statement;
但我一直收到错误代码1064:
<e>Query: PREPARE statement FROM @rowCounts
Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table union all SELECT 'COX_ClientSatisfaction', COUNT(*) FROM COX_ClientSatisfa' at line 1
希望你能提出建议。
答案 0 :(得分:0)
上述评论摘要:使用现有工具mysqldbcompare可以更好地完成检查克隆数据库中表行数是否相同的任务。
过程中出错的原因是MySQL reserved word table
上的语法错误。
在设计自动查询生成器时,如果您使用Schema Object Names下的手册中所述的分隔标识符,则效果最佳。
例如,这是编写查询的更安全的方法:
SELECT GROUP_CONCAT(
CONCAT(
'SELECT ', QUOTE(TABLE_NAME), ', COUNT(*) FROM `', TABLE_NAME, '`')
SEPARATOR ' UNION ALL ')
FROM information_schema.tables WHERE table_schema = @tableSchema