地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

メモ:NEXT Cloud。別サーバーにあるデータベースを変換する。

NEXT CloudでSQLデータベースをROW_FORMAT=Dynamicに変換してね、という警告が出ました。しばらく、放置していたのですが、updateついでに解消します。helpで議論されていたのはSQLサーバが別サーバに設置されているのが、考慮されてなかったので、スクリプトを対応させてました。

 

テーブル数が多いので、手作業はメンドクくさい。一度やれば終わりですが、メモ。

 

管理画面で出たエラーの内容:

Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list:......

 

利用したスクリプト

```sh

#!/bin/bash
set -e

read -p "Enter Database Host [xxxx.xxxx.sakura.ne.jp]: " DB_HOST
DB_HOST=${DB_HOST:-xxxx.xxxx.stitch.sakura.ne.jp}

read -p "Enter Port [3306]: " DB_PORT
DB_PORT=${DB_PORT:-3306}

read -p "Enter Database Name: " DB_NAME
DB_NAME=${DB_NAME:-xxxx}
read -p "Enter Username: " DB_USER
read -s -p "Enter Password: " DB_PASS
echo

mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -Bse "
SELECT CONCAT('ALTER TABLE \`', TABLE_NAME, '\` ROW_FORMAT=DYNAMIC;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '$DB_NAME'
AND ENGINE = 'InnoDB'
" \
| mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME"

```

xxxxのところは、conf/conf.phpと同じように設定する。