課題モジュールで提出物一覧が表示されない問題について part2

Re: 課題モジュールで提出物一覧が表示されない問題について part2

- Kenichi Magara の投稿
返信数: 4

白井先生、ご丁寧にありがとうございます。

まだデバッグ途中ですが、その経過を報告いたします。ご指摘のように

echo 'get_records_sql Start';
if (($ausers = get_records_sql($select.$sql.$sort, $table->get_page_start(), $table->get_page_size())) !== false) {
    echo 'get_records_sql() true!!';
    var_dump($ausers);

と入れてみました。結果、get_records_sql Start は出ますが get_records_sql true!! が出ない、つまり get_records_sql() に失敗しています。

そもそも、そのすぐ上の方で

$table->setup();
if (empty($users)) {
    print_heading(get_string('nosubmitusers','assignment'));
    return true;
}

とあり、添付画像にもページ移動リンクが表示されていることから、

$table->pagesize($perpage, count($users));
printf("count(users)=%d\n", count($users));

で確認すると44という数字が表示されます。get_records_sql() が怪しいところまでは突き止めました。

あと情報として、MoodleデバッグモードをDEVELOPERにしたphp.logも下記に示します(見やすくなるよう若干編集してあります)。

[09-Sep-2010 10:07:58] PHP Notice:  BIGINT UNSIGNED value is out of range in '(`moodle`.`s`.`timemarked` - `moodle`.`s`.`timemodified`)'

SELECT u.id, u.firstname, u.lastname, u.picture, u.imagealt,
                          s.id AS submissionid, s.grade, s.submissioncomment,
                          s.timemodified, s.timemarked,
                          COALESCE(SIGN(SIGN(s.timemarked) + SIGN(s.timemarked - s.timemodified)), 0) AS status FROM mdl_user u LEFT JOIN mdl_assignment_submissions s ON u.id = s.userid
                                                                  AND s.assignment = 140 WHERE u.id IN (404,340,456,1109,571,446,348,347,338,363,581,939,296,416,398,368,437,426,314,438,475,382,379,313,439,391,355,448,324,385,359,397,291,336,443,460,578,369,409,315,454,318,295,323)  ORDER BY lastname ASC

  • line 686 of lib/dmllib.php: call to debugging()
  • line 966 of lib/dmllib.php: call to get_recordset_sql()
  • line 1174 of mod/assignment/lib.php: call to get_records_sql()
  • lin in /usr/local/www/moodle/lib/weblib.php on line 7005

Kenichi Magara への返信

Re: 課題モジュールで提出物一覧が表示されない問題について part2

- Tatsuya Shirai の投稿

>  BIGINT UNSIGNED value is out of range in '(`moodle`.`s`.`timemarked` - `moodle`.`s`.`timemodified`)'

これがどうもよく分からないですね.COALESCEの所かとも思ったのですが,'moodle'がどこから出てくるのか...? sは mdl_assignment_submissions ですので,ここのtimemarkedやtimemodifiedの型や値がよろしくないのでしょうか? 当方では,どちらも種別がbigint(10), 属性がUNSIGNEDで,timemodifedには0以外のタイムコードが記録されており,timemarkedは評価前のモノは0,評価済みのものはタイムコードが記録されています.ただし,遥か昔の提出物についてはtimemodifiedがゼロでtimemarkedにタイムコードが記録されているエントリもありますね.ちなみにtimecreatedは全てゼロです.

Tatsuya Shirai への返信

Re: 課題モジュールで提出物一覧が表示されない問題について part2

- Kenichi Magara の投稿

お世話になっております。

結論から申しますと、Moodleがおかしいのではなく、こちらの環境設定ミスでした。

後進のため恥を偲んで報告いたしますと...

Moodleのアップグレードと同時に行った、MySQLの5.1系から5.5系へのアップグレードでのミスです。

「out of range」の表示を見て、Moodleソースをデバッグするのを中断し、
## これでおかしいなら、もっと報告が上がっているはずなので、
## Moodleのコードを追っかける(疑う)のをヤメました(^^;)
作業記録やPHP/MySQL/システム周りをチェックしたところ、mysql_upgrade でエラーになっておりました。あとは言わずもがなですが...めんどくさいのでMySQLを5.1系に戻したところ、すんなり表示されました。

お騒がせして申し訳ございません。もうすぐ授業が始まるプレッシャーと、しょーもないミスの発覚からか、酷い脱力感です orz

Kenichi Magara への返信

Re: 課題モジュールで提出物一覧が表示されない問題について part2

- Tatsuya Shirai の投稿

ギリギリ間に合ってよかったですね!

さて,内容としてはアップグレード/インストールに関する問題のようですので,そちらのフォーラムにディスカッションを移動します.

#という訳で,全般的日本語フォーラムから移動しました.

Tatsuya Shirai への返信

Re: 課題モジュールで提出物一覧が表示されない問題について part2

- FUJIKAWA Masahiro の投稿

私も同様な現象に遭遇しました。参考のため、投稿します。

最初に構築した環境は、以下の通りです。

・Windows 7

・Apache 2.2.17

・MySQL 5.5.9

・PHP 5.3.5

・fs_moodle 19_4-10-01

 

上記の環境で使用していると、「提出物一覧が表示されない」問題と遭遇しました。

MySQLを5.1.58 にダウングレードしたら、問題解決しました。

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