mysql - 由于时区,apt-get 升级在 mariadb-server 上总是失败

标签 mysql linux timezone mariadb apt-get

MariaDB 10.1.3,内核 3.19.3,Debian

问题:由于 mariadb-server 时区问题,apt-get 升级总是失败。

my.cnf 包含

[mysqld]
default_time_zone=America/New_York

我还导入了tzinfo:

# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

当我手动停止/启动服务时,没有问题:

# service mysql restart
[ ok ] Stopping MariaDB database server: mysqld.
[ ok ] Starting MariaDB database server: mysqld ..
[info] Checking for corrupt, not cleanly closed and upgrade needing tables..

但是,每次我运行 apt-get Upgrade 时,它​​总是在 mariadb-server 上失败:

# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]?
Setting up mariadb-server-10.1 (10.1.3+maria-1~wheezy) ...
[ ok ] Stopping MariaDB database server: mysqld.
dpkg: error processing mariadb-server-10.1 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mariadb-server:
 mariadb-server depends on mariadb-server-10.1 (= 10.1.3+maria-1~wheezy); however:
  Package mariadb-server-10.1 is not configured yet.

dpkg: error processing mariadb-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mariadb-server-10.1
 mariadb-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

错误是:

# tail /var/log/syslog
mysqld_safe[32269]: [ERROR] Fatal error: Illegal or unknown default time zone 'America/New_York'

这种情况发生在多个服务器上,并且已经成为一个真正的烦恼。需要你的帮助。顺便说一句,它不是 MariaDB 版本,因为这个错误在多个版本中已经持续了几年。

编辑添加:我忘了提及如果我从 my.cnf 中删除 default_time_zone 参数,apt-get Upgrade 确实可以工作。只有当该参数存在时,apt-get升级才会失败。我的配置需要它。

编辑2:为了确保清晰,即使删除default_time_zone,然后成功执行apt-get升级,然后添加回default_time_zone并重新启动 - future 的mariadb-*升级将通过apt失败。 apt-get 升级过程中存在一些特定的情况,与正常的服务启动不一致。

最佳答案

有同样的问题。这对我有用:

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /var/lib/mysql
sudo apt-get install mariadb-server

备份/var/lib/mysql文件夹,因为里面的所有数据都会被删除

关于mysql - 由于时区,apt-get 升级在 mariadb-server 上总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565278/

相关文章:

Mysql:如果join中存在特定值,则获取其他列的最小值

mysql - 如何计算组总计?

php - 将 PDO (InnoDB) 事务传递给新类

mysql - Bitnami Dreamfactory Stack 的默认 root 密码

php - 设置要在一天的 cron 作业的特定时间事件上执行的 url

linux - 带有发送的有效负载的 tcpdump

java - 改变运行java程序的线程优先级?

ruby-on-rails - Rails 中的时区怪异

mysql - SELECT UTC_TIMESTAMP() 如何返回 -10 :00 UTC?

Python时区转换