为什么从 Ubuntu 19.04 升级到 19.10 后 Akonadi 无法启动?

Edu*_*ard 3 mysql kubuntu akonadi

我将 Ubuntu 19.04 升级到 19.10,重启后 Akonadi (5.11.3) 没有启动。当我尝试在命令行中启动 akonadi 服务器时,我得到的是:

~$ akonadictl 开始

连接到已弃用的信号 QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)

org.kde.pim.akonadiserver:启动 Akonadi 服务器...

org.kde.pim.akonadiserver:数据库服务器意外停止

org.kde.pim.akonadiserver:初始连接时数据库进程意外退出!org.kde.pim.akonadiserver:可执行文件:“/usr/sbin/mysqld-akonadi” org.kde.pim.akonadiserver:参数:(“--defaults-file=/home/me/.local/share/akonadi/ mysql.conf", "--datadir=/home/me/.local/share/akonadi/db_data/", "--socket=/run/user/1001/akonadi/default/mysql.socket", "-- pid-file=/run/user/1001/akonadi/default/mysql.pid")

org.kde.pim.akonadiserver: stdout: "" org.kde.pim.akonadiserver: stderr: "" org.kde.pim.akonadiserver: 退出代码: 1

org.kde.pim.akonadiserver:进程错误:“未知错误” mysqladmin:在“localhost”连接到服务器失败错误:“无法通过套接字连接到本地 MySQL 服务器”/run/user/1001/akonadi/default/ mysql.socket' (2)' 检查 mysqld 是否正在运行并且套接字:'/run/user/1001/akonadi/default/mysql.socket' 存在!

org.kde.pim.akonadiserver:无法删除运行时连接配置文件 org.kde.pim.akonadiserver:正在关闭 AkonadiServer...

我使用以下输入检查 mysql.err 文件。

~$ cat ~/.local/share/akonadi/db_data/mysql.err

2019-10-19T11:27:02.910707Z 0 [警告] [MY-010097] [服务器] --secure-file-priv 的不安全配置:当前值不限制生成文件的位置。考虑将其设置为有效的非空路径。

2019-10-19T11:27:02.910736Z 0 [系统] [MY-010116] [服务器] /usr/sbin/mysqld (mysqld 8.0.17-0ubuntu2) 作为进程 8385 开始

2019-10-19T11:27:02.912513Z 0 [警告] [MY-013242] [服务器] --character-set-server: 'utf8' 目前是字符集 UTF8MB3 的别名,但将是 UTF8MB4 的别名在未来的版本中。请考虑使用 UTF8MB4 以便明确。

2019-10-19T11:27:02.912523Z 0 [警告] [MY-013244] [服务器] --collat​​ion-server: 'utf8_general_ci' 是已弃用的字符集 UTF8MB3 的整理。请考虑使用带有适当排序规则的 UTF8MB4。2019-10-19T11:27:02.917836Z 1 [系统] [MY-011012] [服务器] 开始升级数据目录。

2019-10-19T11:27:03.171213Z 1 [错误] [MY-010781] [服务器] 在 mysql 模式中找到 ./mysql/index_stats.frm 文件。DD 将创建同名的 .ibd 文件。请重命名表并重新开始升级过程。

2019-10-19T11:27:03.171223Z 1 [错误] [MY-010336] [服务器] 找到与字典表之一同名的 .frm 文件。

2019-10-19T11:27:03.171330Z 0 [ERROR] [MY-010020] [Server] 数据字典初始化失败。

2019-10-19T11:27:03.171338Z 0 [ERROR] [MY-013236] [Server] 指定的数据目录 /home/me/.local/share/akonadi/db_data/ 不可用。您可以删除服务器添加到其中的所有文件。

2019-10-19T11:27:03.697829Z 0 [ERROR] [MY-010065] [Server] 无法关闭组件基础架构。

2019-10-19T11:27:03.171475Z 0 [错误] [MY-010119] [服务器] 中止

2019-10-19T11:27:03.697752Z 0 [系统] [MY-010910] [服务器] /usr/sbin/mysqld:关闭完成 (mysqld 8.0.17-0ubuntu2) (Ubuntu)。

为什么从 Ubuntu 19.04 升级到 19.10 后 Akonadi 没有启动?这和升级到mysql 8.0有关系吗?如何解决这个问题?

Mat*_* J. 6

遇到同样的问题,升级后由于MySQL无法运行akonadi。对我来说,由于我的工作,安装 MariaDB 不是一种选择。我之前使用过 MariaDB,我不得不切换到 MySQL。

   1   ? 2019-11-17T22:14:02.183446Z 0 [Warning] [MY-010097] [Server] Insecure configuration for --secure-file-priv: C
       ? urrent value does not restrict location of generated files. Consider setting it to a valid, non-empty path.
   2   ? 2019-11-17T22:14:02.183483Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.17-0ubuntu2) startin
       ? g as process 30942
   3   ? 2019-11-17T22:14:02.186416Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an a
       ? lias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider usi
       ? ng UTF8MB4 in order to be unambiguous.
   4   ? 2019-11-17T22:14:02.186429Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8_general_ci' is a colla
       ? tion of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation ins
       ? tead.
   5   ? 2019-11-17T22:14:02.194794Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory.
   6   ? 2019-11-17T22:14:02.194929Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
   7   ? 2019-11-17T22:14:02.195077Z 0 [ERROR] [MY-010119] [Server] Aborting
   8   ? 2019-11-17T22:14:02.195315Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.1
       ? 7-0ubuntu2)  (Ubuntu).
Run Code Online (Sandbox Code Playgroud)

这些是我收到的错误和警告。

首先将摆脱嘈杂的警告 vim /home/mathieu/.local/share/akonadi/mysql.conf

替换character_set_server=utf8成 utf8mb4collation_server=根据这个文档注释掉,默认是好的https://dev.mysql.com/doc/refman/8.0/en/charset-server.html

我认为我们无能为力,secure_file_priv= 我认为 akonadi 需要将其清空才能从任意位置加载文件。文档:https : //dev.mysql.com/doc/refman/8.0/en/string-functions.html

那么,实际的错误 Failed to find valid data directory

由于 akonadi 主要是临时数据,我认为最简单的方法是杀死 db_data 目录并重新开始。我们将重命名文件夹而不是删除它

$ cd ~/.local/share/akonadi
$ mv db_data db_databkp
$ mkdir db_data
$ /usr/sbin/mysqld-akonadi --defaults-file=/home/mathieu/.local/share/akonadi/mysql.conf --datadir=/home/mathieu/.local/share/akonadi/db_data/ --socket=/run/user/1000/akonadi/default/mysql.socket --pid-file=/run/user/1000/akonadi/default/mysql.pid --initialize --console
Run Code Online (Sandbox Code Playgroud)

--initialize选项会重新启动db_data目录。如果比较两个目录,您会看到一堆与前一个不同的文件。

现在收到此错误

[ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
Run Code Online (Sandbox Code Playgroud)

我将lower_case_table_names=mysql.conf 中的这个选项从 1切换到 0

您还需要注释掉这个已弃用的选项

log_warnings=2

我不再使用长参数集直接调用 mysqld-akonadi,而是简单地运行akonadiserver并调用 mysql.errorcat日志文件

现在收到这个错误 [Server] unknown variable 'query_cache_size=0'

将评论这个

还需要注释掉 query_cache_type=0

并且 akonadi 能够与 MySQL 8 一起运行

总之:

  • utf8 到 utf8mb4 是一个很好的变化,将两者都注释掉是新的默认值
  • 注释掉 4 个已弃用的选项
  • 移开旧的 db_data 目录,改为创建一个空目录
  • 重启 akonadiserver

希望这可以帮助

更新:如果您收到此错误

org.kde.pim.akonadiserver: Running DB initializer
org.kde.pim.akonadiserver: "\nSql error: Duplicate column name 'version' QMYSQL: Unable to execute query\nQuery: ALTER TABLE SchemaVersionTable ADD COLUMN version INTEGER NOT NULL DEFAULT 0"
Run Code Online (Sandbox Code Playgroud)

这意味着已添加该列,但未将数据库迁移标记为已完成。我建议db_data再次关闭文件夹,手动运行初始化。并启动 akonadiserver

它终于为我运行。并且在 19.04 中不断崩溃的 korganizer 现在可以运行;)

更新(2020 年):重置 Akonadi 数据库时要非常小心这个错误 https://bugs.kde.org/show_bug.cgi?id=414400

从 19.10 开始,我遇到了太多问题。MariaDB 或 MySQL 8 都没有正常工作。一直不得不重置 Akonadi。最后通过 Docker 运行 MySQL 5.6 和 5.7

sudo docker run --name mysql57 --rm -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=docker -d mysql:5.7

但一直有问题。我放弃了 Akonadi/kdepim,卸载了所有相关的软件包并切换到 Thunderbird。等离子运行平稳。