MySQL 问题:设置为 DEFAULT = CURRENT_TIMESTAMP 的列在 sql 导入期间在整个数据库中被覆盖
MySQL issue: columns set to DEFAULT = CURRENT_TIMESTAMP got overwritten during sql import, on entire database
几个月前,我迁移到另一台 mysql 服务器,并通过 phpMyAdmin Web 界面进行了导出和导入。我刚刚意识到我刚刚丢失了多个表的所有“创建日期”,因为它们都被我认为是导入操作的日期覆盖了。
现在没什么大不了的,因为它仍然是开发测试数据,但这在生产过程中会造成巨大损失(如果我需要再次迁移的话)。
关于为什么会发生这种情况,或者如何防止它再次发生,有什么想法吗?正如我在标题中提到的,列的 'type' 都设置为 Datetime,'default' 设置为 CURRENT_TIMESTAMP,我只是注意到 'extra' 设置为 DEFAULT_GENERATED(这可能表明存在问题,因为我以前从未见过)。
注意:当前版本是 8.0.20,我相信旧服务器是 5.6。另外,我很确定我保留了所有 export/import 设置。我记得导入引发了投诉,但我相信它与默认的 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 上修复。
几个月前,我迁移到另一台 mysql 服务器,并通过 phpMyAdmin Web 界面进行了导出和导入。我刚刚意识到我刚刚丢失了多个表的所有“创建日期”,因为它们都被我认为是导入操作的日期覆盖了。
现在没什么大不了的,因为它仍然是开发测试数据,但这在生产过程中会造成巨大损失(如果我需要再次迁移的话)。
关于为什么会发生这种情况,或者如何防止它再次发生,有什么想法吗?正如我在标题中提到的,列的 'type' 都设置为 Datetime,'default' 设置为 CURRENT_TIMESTAMP,我只是注意到 'extra' 设置为 DEFAULT_GENERATED(这可能表明存在问题,因为我以前从未见过)。
注意:当前版本是 8.0.20,我相信旧服务器是 5.6。另外,我很确定我保留了所有 export/import 设置。我记得导入引发了投诉,但我相信它与默认的 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 上修复。