我正在尝试创建一个脚本来分析 mysql.slow_log
表中的数据。出于这些目的,我需要将一些我感兴趣的行复制到另一个临时表中,所以我要这样做:
CREATE TABLE IF NOT EXISTS test.slow_log_to_analyze LIKE mysql.slow_log;
TRUNCATE TABLE test.slow_log_to_analyze;
INSERT INTO test.slow_log_to_analyze
SELECT * FROM mysql.slow_log WHERE start_time < (NOW() - INTERVAL 1 MINUTE);
不幸的是,最后一条命令抛出错误:
Error Code: 1264. Out of range value for column 'query_time' at row 1
slow_log 和另一个表的结构应该是相同的,所以这对我来说没有任何意义。有什么问题?
我正在使用 MySQL 5.5.39.0。
编辑: test.slow_log_to_analyze
表总是使用... LIKE mysql.slow_log
创建,所以没有理由让它有不同的结构。
最佳答案
关键字 IF NOT EXISTS
可防止在表存在时发生错误。但是,无法验证现有表的结构是否与 CREATE TABLE
语句所指示的结构相同。
执行以下操作似乎更简单:
DROP TABLE IF EXISTS test.slow_log_to_analyze;
CREATE TABLE test.slow_log_to_analyze SELECT * FROM mysql.slow_log;
关于MySQL:将数据复制到使用 LIKE 创建的表时超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917514/