MySQL timestamp 到2038如何解决
目前MySQL版本8.0.29,尝试了改sql_mode但是没有效果,只能把字段改为datetime吗
MySQL升级到了8.0.36,设置了sql_mode,新建了一张表设置日期超过2038还是不行
升级后配置也不行,最后还是改表了,这里补充一个批量改表方式,执行下面查询sql,得到的sql语句复制出来然后执行就行了。
SELECT CONCAT( 'ALTER TABLE `', t.TABLE_NAME, '` MODIFY `',t. COLUMN_NAME, '` DATETIME COMMENT ''', IFNULL(t.column_comment, ''), ''';') AS alter_statementFROM ( SELECT TABLE_NAME, COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'your_table' AND COLUMN_TYPE LIKE '%timestamp%') AS colsLEFT JOIN ( SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'your_table' AND COLUMN_COMMENT IS NOT NULL) AS tON cols.TABLE_NAME = t.TABLE_NAME AND cols.COLUMN_NAME = t.COLUMN_NAMEWHERE t.TABLE_NAME IS NOT NULL;
MySQL 的 TIMESTAMP 数据类型在存储时间戳时有一个已知的限制,这是由于其底层表示是基于 Unix 时间戳的 32 位整数。Unix 时间戳从 1970 年 1 月 1 日开始计算,以秒为单位,由于它是 32 位的,因此它只能表示到 2038 年 1 月 19 日 03:14:07 UTC 的时间范围。一旦超过这个时间点,TIMESTAMP 数据类型可能会遇到溢出问题。
对于 MySQL 8.0.29 版本,解决这个限制的方法有几种:
使用 DATETIME 数据类型:
如果你不需要考虑时区变化,或者你的应用程序可以处理时区转换,那么将字段类型从 TIMESTAMP 改为 DATETIME 是一个简单直接的解决方案。DATETIME 类型可以表示从 1000-01-01 00:00:00 到 9999-12-31 23:59:59 的日期和时间范围。
示例:
ALTER TABLE your_table_name MODIFY your_timestamp_column_name DATETIME;
使用 BIGINT 和 UNIX 时间戳:
如果你需要更高的时间精度或超过 DATETIME 范围的时间戳,你可以使用 BIGINT 数据类型来存储 Unix 时间戳(以毫秒或微秒为单位)。这样,你可以存储从 1970 年 1 月 1 日至今的任意时间,并且能够扩展到未来很长的时间。
示例:
ALTER TABLE your_table_name MODIFY your_timestamp_column_name BIGINT UNSIGNED;
在应用程序中,你可以使用相应的函数来将 BIGINT 类型的 Unix 时间戳转换为人类可读的日期和时间格式。
请注意,更改列的数据类型可能会影响现有的应用程序代码和查询,因此在进行更改之前,请确保你了解这些更改的影响,并在生产环境中进行充分的测试。
问题内容: 在启动时,我正在为我们的数据库考虑扩展解决方案。MySQL至少使我感到困惑(至少对我而言),MySQL具有MySQL群集,复制和MySQL群集复制(来自5.1.6版),它是MySQL群集的异步版本。MySQL手册解释了其集群FAQ中的一些差异,但是很难确定何时使用它们中的一个。 我将不胜感激那些熟悉这些解决方案之间的区别以及优点和缺点以及何时建议使用每种解决方案的人的任何建议。 问题答
本文向大家介绍CentOS 7中MySQL连接数被限制为214个的解决方法,包括了CentOS 7中MySQL连接数被限制为214个的解决方法的使用技巧和注意事项,需要的朋友参考一下 发现问题 最近在项目中遇到一个问题,由于连接数过多,提示 “Too many connections” ,需要增加连接数。 我在 /etc/my.cnf中修改了: 但是, 实际连接数一直被限制在 214: 思考 如果
本文向大家介绍详解MySQL双活同步复制四种解决方案,包括了详解MySQL双活同步复制四种解决方案的使用技巧和注意事项,需要的朋友参考一下 对于数据实时同步,其核心是需要基于日志来实现,是可以实现准实时的数据同步,基于日志实现不会要求数据库本身在设计和实现中带来任何额外的约束。 基于MySQL原生复制主主同步方案 这是常见的方案,一般来说,中小型规模的时候,采用这种架构是最省事的。 两个节点可以
视听年龄限制 部分内容(游戏或影像等)可能预先内建了视听限制。设定PSP™主机的视听年龄限制,可限制PSP™不得播放超过该限制等级的内容。除[关]外,PSP™主机共可设定为11种等级。 关 解除视听年龄限制 11~1 设定视听年龄限制的数字等级。数字愈小代表视听愈受局限。 随着PSP™主机和内容之视听年龄限制的组合,将决定可否播放。两者间的组合如下表。 范例:PSP™的视听年龄限制设定为[9]时,
本文向大家介绍MySQL高可用解决方案MMM(mysql多主复制管理器),包括了MySQL高可用解决方案MMM(mysql多主复制管理器)的使用技巧和注意事项,需要的朋友参考一下 一、MMM简介: MMM即Multi-Master Replication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚
问题内容: 我正在从Java Collection Framework寻找一个不允许使用null元素的类。 你认识一个吗 问题答案: 大多数实现(值得注意的例外)不接受。 是一种不允许值的专用实现。