MySQL 问题:设置为 DEFAULT = CURRENT_TIMESTAMP 的列在 sql 导入期间在整个数据库上被覆盖 编辑

问题描述

几个月前,我迁移到另一个 mysql 服务器,并通过 phpMyAdmin Web 界面进行了导出和导入。我才意识到,我只是失去了所有的“创建日期”为多个表,因为他们都与我所相信的是导入操作的日期得到覆盖。

现在没什么大不了的,因为它仍然是开发测试数据,但这将是生产过程中的巨大损失(如果我需要再次迁移)。

关于为什么会发生这种情况或如何防止它再次发生的任何想法?正如我在标题中提到的,列的“类型”都设置为日期时间,“默认”设置为 CURRENT_TIMESTAMP,我只是注意到“额外”设置为 DEFAULT_GENERATED(这可能是问题的指示,因为我以前从未见过这个)。

注意:当前版本是 8.0.20,我相信旧服务器是 5.6。另外,我很确定我没有考虑所有导出/导入设置。我记得导入引发了投诉,但我相信它与默认的 sql 表有关。

编辑

所以,我刚刚查看了导出生成的 .sql 文件,我可以看到 INSERT INTO (..) VALUES (...) 不包含 creation_date 列或其任何数据。所以出口一定有问题。有什么想法可以在我下一次导出时寻找什么吗?

解决方法

感谢大家的评论。这是 .sql 文件顶部的信息:

-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3306
-- Generation Time: Mar 24,2021 at 07:42 PM
-- Server version: 8.0.20
-- PHP Version: 7.3.11

所以看来我是从 8.0.20 导出的...很奇怪,我确定它是 5.6。无论如何,问题似乎正是@Solarflare 提到的,并且似乎在新版本的 phpMyAdmin 上得到了解决。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...