fix oc_ext_apps corrupted

在 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 就行了。修复过程如下:

  1. 连接到 mariadb,root 身份直接 mariadb -uroot
  2. 然后在 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