web-dev-qa-db-ja.com

Ubuntu 19.04から19.10へのアップグレード後にAkonadiが起動しないのはなぜですか?

Ubuntu 19.04を19.10にアップグレードすると、再起動後にAkonadi(5.11.3)が起動しません。コマンドラインでakonadiサーバーを起動しようとすると、次のようになります。

〜$ akonadictl start

非推奨のシグナル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:arguments:( "--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] [サーバー]辞書テーブルの1つと同じ名前の.frmファイルが見つかりました。

2019-10-19T11:27:03.171330Z 0 [エラー] [MY-010020] [サーバー]データディクショナリの初期化に失敗しました。

2019-10-19T11:27:03.171338Z 0 [エラー] [MY-013236] [サーバー]指定されたデータディレクトリ/home/me/.local/share/akonadi/db_data/は使用できません。サーバーが追加したすべてのファイルを削除できます。

2019-10-19T11:27:03.697829Z 0 [エラー] [MY-010065] [サーバー]コンポーネントインフラストラクチャのシャットダウンに失敗しました。

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へのアップグレードに接続されていますか?これをどのように解決できますか?

2
Eduard

mariadbを使用する必要があります。 mysql 8には互換性がありません。

Sudo apt install mariadb-server-core-10.3 mariadb-client-core-10.3
2
BrianH

同じ問題が発生し、アップグレード後に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).

これらは私が得ているエラーと警告です。

最初に騒々しい警告を取り除きますvim /home/mathieu/.local/share/akonadi/mysql.conf

このドキュメントによると、character_set_server=utf8をutf8mb4コメントアウトcollation_server=に置き換えると、デフォルトは適切です https://dev.mysql.com/doc/refman/8.0/en/charset-server。 html

secure_file_priv=について何もできるとは思いません。任意の場所からファイルをロードできるようにするためにakonadiは空である必要があると思います。 doc: 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

--initializeオプションはdb_data dirを新たに開始します。両方のディレクトリを比較すると、前のファイルとは異なる一連のファイルが表示されます。

現在このエラーが発生しています

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

Mysql.confのこのオプションlower_case_table_names=を1から0に切り替えます

また、この非推奨のオプションをコメント化する必要があります

log_warnings=2

長い引数セットを使用してmysqld-akonadiを直接呼び出すのではなく、単にmysql.errorログファイルをakonadiserverおよびcating実行する

このエラーが発生しています[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"

これは、列が既に追加されているが、データベースの移行に完了のフラグが付いていないことを意味します。手動で初期化を実行し、db_dataフォルダーを削除することをお勧めします。 akonadiserverの起動

ついに私のために実行されます。そして、19.04に絶えずクラッシュしていたkorganizerが実行されます;)

アップデート(2020):Akonadi DBをリセットするときは、このバグに十分注意してください https://bugs.kde.org/show_bug.cgi?id=4144

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に切り替えました。プラズマはスムーズに動きます。

2
Mathieu J.

Kubuntu 19.04から19.10に更新してからAkonadiの問題も発生しました。 mysqlログファイル~/.local/share/akonadi/db_data/mysql.errには、次のようなエラーが含まれていました。

unknown variable 'log-warnings=2'

だから、私はそれらを/home/NNN/.local/share/akonadi/mysql.confでコメントアウトしました:

# print warnings and connection errors (default:1)
#log_warnings=2
 .
 .
# Memory allocated for caching query results (default:0 (disabled))
#query_cache_size=0 
. .
# Do not cache results (default:1)
#query_cache_type=0

正直なところ、変更された変数とその結果はどうなるのか、私は気にしませんでした...

1
user1008792

このエラーは、MySQLにindex_statsという名前のユーザーテーブルがあることを示していますが、これは奇妙に見えます。あなたまたはあなたが使用するプログラムの1つがそのテーブルを作成しない限り。

言い換えると、MySQL 8.0はその名前のテーブルを使用するため、その名前のテーブルはもうありません。

ファイルの名前をindex_stats_bak.frmのような名前に変更してみることができますが、それを使用するプログラムがどうなるかはわかりません。

この投稿 は、現在システムで使用されているテーブル名のリストindex_statsを持っています。

テーブルを作成するAkonadiの source を見ると、MySQL 8と競合する可能性は非常に低いようです。新しいテーブルの一部を残しているMySQLの部分的なアップグレードがあったと思いますが、すべてではない。 index_statsは、おそらくその部分的な更新で作成されました。

0
Victory