MySQL:将数据复制到使用 LIKE 创建的表时超出范围

标签 mysql sql

我正在尝试创建一个脚本来分析 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/

相关文章:

python - oursql 插入数据速度极慢

php - 根据整数调用函数

java - 带返回列表 hibernate 的调用过程

c# - 在分层 SQL 数据库中查找所有父项

php - Mysqli 准备无法在另一个准备好的语句中工作

mysql - 在 mysql 上使用变量,就像 Laravel 查询生成器上的句子一样

mysql - mysql中随机生成用户?

mysql - 单个查询中的 mysql 多个插入是原子的吗?

sql - 在 H2 中将特殊字符串转换为日期

MYSQL - 按周分组,同时显示没有值的周