在 upgrade nextcloud 的过程里,执行 occ upgrade 的时候发现错误提示:
1
- ERROR: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 1877 Table `nextcloud`.`oc_ex_apps` is corrupted. Please drop the table and recreate.
搜索了 nextcloud 社区,虽然没有直接的解决方法,但是从这个对话里得到了 schema。虽然是 postgresql 的,但是让 chatgpt 转换成 mariadb 就行了。修复过程如下:
- 连接到 mariadb,root 身份直接
mariadb -uroot
- 然后在 mysql shell 中执行以下命令(这里数据库名字之类的用的默认名字):
1 2 3 4 5 6 7 8 9 10 11 12 13 14
USE nextcloud; DROP TABLE oc_ex_apps; CREATE TABLE nextcloud.oc_ex_apps ( id BIGINT NOT NULL, appid VARCHAR(32) NOT NULL, version VARCHAR(32) NOT NULL, name VARCHAR(64) NOT NULL, daemon_config_name VARCHAR(64) NOT NULL DEFAULT '0', port SMALLINT NOT NULL, secret VARCHAR(256) NOT NULL, status JSON NOT NULL, enabled SMALLINT NOT NULL DEFAULT 0, created_time BIGINT NOT NULL );
这样就修好了。不过这个 schema 是 30.0.x 的,为了避免刻舟求剑,可以定时用以下命令导出整个 nextcloud 数据库中所有 table 的 schema:
1
mariadb-dump --no-data nextcloud > nextcloud_schema.sql