初心者による質問フォーラム

「ユーザをアップロードする」でのトラブル

 
画像 充男 楠見
「ユーザをアップロードする」でのトラブル
 

Windows Server 2016 Datacenter (azure上)  moodle 3.3.2 (Build: 20170911)

「ユーザをアップロードする」でCSVファイルのアップロードを行うと、「CSVファイルの読み込み中にエラーが発生しました: 無効なCSVファイルフォーマット - カラム数が一定ではありません!」というメッセージが出て止まります。

「このエラーに関する詳細情報」

をクリックすると

「error/moodle/csvloaderror 現在このページには内容がありません」となります。

文字コードはUTF-8、改行コードは CR+LFを使用しています。 

コーホートのアップロードはできます。また一人ずつの登録はできます。(1行のCSVはダメでした)

同じCSVファイルで、LINUX上の3.3.2 (Build: 20170911)や3.1.2 (Build: 20160912)では問題が起きません。

どなたか情報をご存知でしたらお教えいただければ幸いです。

楠見充男


 
評点平均: お役立ち度: ★★★★★★★ (1)
画像 Mitsuhiro Yoshida
Re: 「ユーザをアップロードする」でのトラブル
グループ Developersグループ Translators

本投稿の添付ファイルを使った場合、ユーザを正常にアップロードできますでしょうか?

 
評点平均: お役立ち度: ★★★★★★★ (2)
画像 充男 楠見
Re: 「ユーザをアップロードする」でのトラブル
 

吉田様、ありがとうございます。添付いただいたCSVファイルでのアップロードはできました。サーバー側の問題ではないことがはっきりしましたので、CSVファイルを精査してみます。自分のファイルとの違いは、漢字の有無、桁数、桁幅、改行コード、項目名(cohort1,city) ですので、一つひとつつぶしていきます。また報告します。楠見充男

画像 充男 楠見
Re: 「ユーザをアップロードする」でのトラブル
 

その後調べたところ、「サーバーがWindowsで、データに漢字があり、コードがUTF-8の時」に発生することがわかりました。データが英数であれば問題が起きません。

SHIFT-JISでアップロードはできますが、文字化けします。

LINUXサーバーでは起きません。

また、コーホートのアップロードは問題ありません。

「ユーザーをアップロードする」モジュールのバグと考えられますが、このような問題はどちらに相談すればよいのでしょうか?





川口 雄一
Re: 「ユーザをアップロードする」でのトラブル
 

楠見 様、

若しかしたら既にご確認済かも知れませんが、話題には出てなかったので... 。

自分の場合は、moodle 3.2系列から3.3.1に上げるときに、MariaDB (MySQL) の文字コードで警告がありました。utf-8ではなくutf8mb4を使うべきだそうです (参照)。

LinuxとWindowsで、DBのホストは同じでしょうか。ご参考になれば。

 
評点平均: お役立ち度: ★★★★★★★ (2)
画像 充男 楠見
解決しました。Re: 「ユーザをアップロードする」でのトラブル
 

解決しました。

川口様、貴重な情報ありがとうございます。

ニューマシンに、新規に3.3.2をインストールしたので、警告に気が付きませんでした。

LINUXは AWS上、Winodws (WS2016 datacenter)はAZURE上の仮想サーバーなので、DBは全く異なります。

サイト管理、サーバ、動作環境を見たら、下記チェックが表示されました。

「mysql_full_unicode_support [チェック]

このテストに不適合の場合、潜在的な問題が存在することを意味します。現在のMySQLまたはMariaDBの設定では「utf8」を使用しています。この文字セットは絵文字を含む4バイト文字をサポートしていません。これらの文字を使用した場合、結果としてレコードのアップデート時にエラーが発生してデータベースに送信されるデータが失われてしまいます。あなたの設定を「utf8mb4」に変更することをお考えください。詳細はドキュメンテーションをご覧ください。」

ドキュメンテーションは見つかりませんでしたが、サイト管理、言語設定   サイト全体のロケール を UTF8mb4に設定して、再起動することにより、正常に稼働するようになりました。

ありがとうございました。



 
評点平均: お役立ち度: ★★★★★★★ (1)