Nextcloudを導入しているサーバーにてエラーが表示した場合の対処方法についてまとめています。
日本語設定をしている場合は、エラーコードも日本語で表示される場合があるので、主に日本語設定を前提としたエラーコードとして取り扱います。
目次
- 1 【エラーコード】Exception: Updates between multiple major versions and downgrades are unsupported.
- 2 【エラーコード】「チャンクを組み立てる際のエラー、ステータスコード500」の原因
- 3 【エラーコード】「An exception occurred while executing a query: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction」について
- 4 NextcloudをFTPのみでアップデートする際、appsフォルダを入れ替えてはいけない
- 5 Nextcloudのエラーまとめ
【エラーコード】Exception: Updates between multiple major versions and downgrades are unsupported.
原因はアップデート前のバージョン情報が残ってしまっているようです。自分でconfigファイルを書き換えてあげる必要があります。
【解決策】config.phpファイルにあるバージョンを書き換える
「/config/config.php」を開き、「’version’」を目的のバージョンに手動で書き換えてあげてアップデートを実行すると解決します。
'version' => '23.0.2',
【エラーコード】「チャンクを組み立てる際のエラー、ステータスコード500」の原因
Error when assembling chunks, status code 500
チャンクを組み立てる際のエラー、ステータスコード500
原因は2GBを超える、大きな容量のファイルをアップロードした場合に、処理時間がかかることによってタイムアウトしてしまう事がこのエラーで最も多い原因です。一般的には504エラーがTimeoutですが、500エラーになる環境もある模様。
対処方法としては、サーバーに割り振られているメモリやサイズ制限などを見直す必要があります。NextcloudはPHP製なので、サーバー管理画面などから「PHP INI」の編集項目を探してみましょう。
Nextcloud「チャンクを組み立てる際のエラー、ステータスコード500」の対処方法
サーバーの「PHP INI」の編集で色々な設定を試してみましたが、アップロードに成功したのは以下です。ご自分のサーバー設定と数値の比較参考にしてみてください!
max_execution_time | 3600 |
max_input_time | 600 |
memory_limit | 1024M |
post_max_size | 512M |
upload_max_filesize | 512M |
memory_limit
これにより、スクリプトが割り当てることができるメモリの最大量がバイト単位で設定されます。Nextcloudは最低推奨値に512MBを指定していますので、それ以上にできればしておくと安心ですが、サーバー全体に影響するのでNextcloudだけにリソースを割り振りすぎないようにする必要があります。
post_max_size
許可される投稿データの最大サイズを設定します。この設定は、ファイルのアップロードにも影響します。大きなファイルをアップロードするには、この値はupload_max_filesizeよりも大きくする必要があります。一般的に、memory_limitはpost_max_sizeよりも大きくする必要があります。
upload_max_filesize
アップロードされるファイルの最大サイズです。Nextcloudはこの上限以上のファイルをアップロードできますが、内部処理でファイル分割して送信してくれている為です。この数値が大きいほど分割回数が減るのでアップロードスピードが上がります。
max_execution_time
これは、スクリプトがパーサーによって終了されるまでに実行できる最大時間を秒単位で設定します。これは、不適切に記述されたスクリプトがサーバーを拘束するのを防ぐのに役立ちます。デフォルト設定は30です。Nextcloudでは大容量ファイルの処理に時間がかかりますので、3600秒にします。
【解決策】「Flow Upload」でNextcloudのアップロード状況を可視化する
簡易的な解決策ですが、Nextcloudのアプリに「Flow Upload」というアプリが存在します。このアプリをインストールすると、アップロード状況の詳細が可視化できます。
参考 Flow Upload – アプリ – App Store – Nextcloud
機能:HTML5ブラウザで大きなファイルをアップロードする機能を提供します。
こちらを導入して解決したというケースもあるので、上記のPHP INIの編集だけでは解決しなかった場合は試してみましょう!
【エラーコード】「An exception occurred while executing a query: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction」について
一気に数千ファイルをアップロードしようとした時に出現しました。高負荷状態になると出るエラーの一つで、データベースにデッドロックファイルが見つかったというエラーです。
クエリの実行中に例外が発生しました:SQLSTATE [40001]:シリアル化の失敗:1213ロックを取得しようとしたときにデッドロックが見つかりました。トランザクションを再開してみてください
【解決策】「An exception occurred while executing a query: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction」の対処方法
アップロードするファイル数を分割して負荷を減らすことでエラーを出さずにアップロードできました。メモリーキャッシュの構築などの処理が間に合っていないと起きるエラーのようなので、負荷を気にした利用方法で対応しました。
NextcloudをFTPのみでアップデートする際、appsフォルダを入れ替えてはいけない
FTPのみでNextcloudをアップデートする際には、configフォルダだけでなくappsフォルダも残す必要がありました。
ほとんどの場合でアップデートする際にappsが必要になります。
これを知らないとコマンドが利用できない環境で手動アップデートしようと思った時にハマります…。
Nextcloudのエラーまとめ
Nextcloudのエラーコードについてのまとめです。様々なエラーを体感していますが、大容量ファイル取り扱いや一気に数千ファイルの取り扱いで起きるエラーが多く見られました。
NextCloudのソフトウェアの完成度は高いのですが、サーバー環境に大きく依存するので環境構築も整えていきたいですね。
今日も知識欲は止まらない。