美文网首页
mysql时区问题

mysql时区问题

作者: 小小了墨 | 来源:发表于2019-08-13 11:45 被阅读0次

mysql时区问题

查询mysql时区

我在使用mysql时,与实际的时间相差了8小时

通过命令查出mysql的时区

mysql > show variables like '%time_zone%';

+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | SYSTEM |

所以出现相差了8个小时的时区问题

  • system_time_zone:是只读的,在每次启动mysql时读取系统的时区。
  • time_zone:默认值是SYSTEM, 走的系统时间。

修改mysql时区

  1. 修改docker中启动的mysql
    由于我使用的是docker启动的服务,所以这个是在docker中使用mysql的修改方法,进入到容器中,修改/etc/mysql/my.cnf
# my.cnf

[mysqld]
default-time-zone = '+08:00'

在[mysqld]下追加default-time-zone = '+08:00'

注意:如果表字段类型是datetime,它不支持时区的动态变换,存储数据的时候没有时区的概念;如果想要有时区概念,那么要用timestamp类型的

上面的方法不是很好,最好是通过修改外部挂载或者连接mysql时区修改

  1. 连接时去临时修改
  • 使用npm包中的mysql,直接追加参数
const mysql = require('mysql')
const defaultOptions = {}
const options = {
    ...defaultOptions,
    timezone: '+08:00'
}
const connection = mysql.createConnectin(options)
connection.connect();
// ...
connection.end();
  • 使用egg-mysql时,由于文档上说使用的是ali-rds,而ali-rds又使用的是mysqlnpm包连接的,所以应该差不多
# config/config.default.js
config.mysql = {
    client: {
          host: 'host',
          port: 3306,
          user: 'user',
          password: 'password',
          database: 'database',
          timezone: '+08:00'
    },
    app: true,
    agent: false
}

在修改my.cnf时遇到的问题

使用bash进入容器后,无法用vi或者vim去编辑修改,这里使用其他方式

$ echo default-time-zone = "'+08:00'" >> my.cnf

注意:"'+08:00'"这里加双引号是为了将单引号输入进去,不加将忽视单引号

如果添加错了,通过下面命令删除再重新输入

# 定义记录行数的变量
$ A=$(sed -n '$=' my.cnf)
# 删除指定行数的,这里是最后一行
$ sed $(($A)),${A}d -i my.cnf

这是删除最后一行的,如果想删除指定行数的文本:

  • sed $(($A)),${A-n+1}d -i my.cnf删除倒数第n行的文本
  • sed $(($A)),${n}d -i my.cnf删除正数第n行的文本

相关文章

  • mysql时区问题

    mysql时区问题 查询mysql时区 我在使用mysql时,与实际的时间相差了8小时 通过命令查出mysql的时...

  • mysql 时间总结

    本文包含如下问题: 1 mysql如何参看时间 2 mysql如何查看当前时区 3 mysql如何修改当前时区 4...

  • The server time zone value 'Öйú

    mysql默认服务器时区问题:修改jdbc:mysql://localhost:3306/test?useUnic...

  • mysql时区问题

    前提背景1.mysql-connector-java的版本号8.0.21 1.在北京时间【Thu Dec 16 ...

  • mysql 时区问题

    问题 插入时间到数据库中,会少13个小时(有时候是11个小时) 读取出来,则会自动加上少了的时间,读到的Date对...

  • Mysql时区问题

    MySQL默认时区为UTC,我们属于东八区时间,和UTC存在八个小时时差。在做时间相关操作的时候,会出现不一致问题...

  • MySQL时区问题

    今天遇到一个很奇怪的问题,在代码里面通过MyBatis 能查询到今天的数据,但是将打印的SQL放到DataGrip...

  • mysql的时区错误问题: The server time zo

    mysql的时区错误问题: The server time zone value 'Öйú±ê׼ʱ¼ä' i...

  • MySQL数据库修改时间、时区

    MySQL数据库修改时间、时区 mysql默认使用的SYSTEM时区,即EST时区,查询相关资料可知,EST时区要...

  • 开发工具箱

    1、 IDE连接MySQL时区问题: 解决方案:URL后面添加

网友评论

      本文标题:mysql时区问题

      本文链接:https://www.haomeiwen.com/subject/vsevjctx.html