データベースの更新に失敗しました


投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 .7 .8 | 投稿日時 2017/11/14 13:15 | 最終変更
hiro1613  半人前   投稿数: 24

こんにちは。
XOOPS Cube Legacy 2.2.3でd3diaryを使用していたのですが、サーバーが古くなったため交換時にPHPがアップデートしたので最新のd3diaryに入れ替えました。
入れ替える前は不正なIDとなり掲載できなくなり、アップデート後は
データベースの更新に失敗しましたになり更新できません。
phpは変更できるので、5.1〜5.6まで試しましたが全く同じです。
ちなみにPHPデバッグにしても何も出ません。
新規投稿ができない状態で、すでに書き込まれているものは編集できます。
何か考えられることはあるでしょうか?

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017/11/19 6:12 | 最終変更
なーお  長老   投稿数: 1746

hiro1613さん、こんにちは。

お返事が大変遅くなりました。

取り急ぎ一時的にサイトを閉鎖し、下記コードの新規作成時のリダイレクトをコメントアウトしてリダイレクトされない状態とし、phpデバグで出る全てのエラーの確認をお願いできますでしょうか。

https://github.com/naao/d3diary/blob/master/xoops_trust_path/modules/d3diary/main/edit.php#L323

現時点では超推測ですが、おそらく、元のサーバーでは古いd3diaryが稼働していて、アップデート前のテーブル構造のバックアップを、テーブル構造の異なる新しいd3diaryに上書きしてしまったのかな? と想像しています。

お急ぎでしたら、新しいサーバー上に、古いd3diaryをインストールしてそこにインポートしてから、d3diaryのバージョンアップ操作を行ってみてください。

念のため、古いほうのd3diaryのバージョンを教えていただけますか?

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017/11/19 23:53 | 最終変更
hiro1613  半人前   投稿数: 24

お返事ありがとうございます。
新規作成時のリダイレクトをコメントアウトはどの部分でしょうか?
ちなみにサイトを閉鎖して48〜51行目をコメントアウトし、PHPデバッグでやってみましたが、何も出ませんでした。
古いd3diaryのバージョン0.17だったと思います。
0.17→0.18d→0.50と手作業でアップデートしました。
よく確認するとデータベースがMariaDB10.2.10に変わっています。それが問題でしょうか?

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017/11/21 5:41
なーお  長老   投稿数: 1746

hiro1613さん、こんにちは。

d3diaryをアップデートしてもだめだったのですね。 MariaDBのバージョンの件は未確認ですが、一般的には問題ないはずですが。

コメントアウトする行については、前コメントのリンク先がその行番号にしてあったのですが、分かりにくかったですね。 323行目になります。 再度お願いします。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017/11/21 9:04
hiro1613  半人前   投稿数: 24

こんにちは。

コメントアウトしてやってみましたが、

日記を新しく登録しました。
ページが自動的に更新されない場合はここをクリックしてください

ERROR:不正なID値です
ページが自動的に更新されない場合はここをクリックしてください

トップページにリダイレクトされます。

その際にPHPデバッグでのエラーは何も表示されません。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017/11/21 20:50 | 最終変更
なーお  長老   投稿数: 1746

hiro1613さん
コメントアウトした行のすぐ後、(ifの{}の中)に2行追記してみてください。

324
325
    var_dump($diary);
    exit();

さらに、プリロード adeliedebug.class.php をサイトpreloadに追加してください。
https://github.com/suin-xoops/xoops-adelie-debug/blob/master/build/AdelieDebug.class.php

出た画面をそのままPCに保存し、すぐに上記プリロードはpreloadフォルダからdisabledに移してください。
オフラインで保存した画面を開き、SQLエラーが出ている行(多分、赤字になるはず)をお知らせください。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017/11/22 3:16 | 最終変更
hiro1613  半人前   投稿数: 24

こんばんは。

下記が出ました。

object(D3diaryDiary)#137 (14) { ["uid"]=> int(1) ["bid"]=> int(0) ["cid"]=> string(1) "4" ["title"]=> string(5) "dっd" ["diary"]=> string(7) "っっd" ["create_time"]=> NULL ["update_time"]=> NULL ["openarea"]=> string(0) "" ["dohtml"]=> int(0) ["vgids"]=> string(0) "" ["vpids"]=> string(0) "" ["view"]=> NULL ["bids"]=> NULL ["diaries"]=> array(0) { } }
Adelie Debug(Build 20140712174940)

Errors

PHP ERROR (8)...#1#2#12#17#18#19#20#21
SQL ERROR (1)...#28
Cheat Sheet

adump([mixed[, mixed]])atrace()awhich(object|string)asynop(object|string)
[ open detail ][ close detail ]

下記にPHP ERRORのTimelineを保存したものをアップしました。
http://hd-test.net/seki/

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017/11/22 20:07 | 最終変更
なーお  長老   投稿数: 1746

hiro1613 さん、こんばんは。

 ありがとうございます。
 ようやく原因がわかりました。

 手元のMariaDB 10.0では問題なかったので気づきませんでしたが、10.2だとあいまいな所の拒否が厳しいのか、だめみたいですね。

 取り急ぎ、以下のように292行目を編集してください。「(int)」を挿入です。

$diary->openarea=(int)$func->getpost_param('openarea');
投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017/11/23 16:28
hiro1613  半人前   投稿数: 24

ありがとうございます。

無事投稿できました。
10.0と10.2で変わっているんですね。
本当にありがとうございました。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017/11/23 18:43 | 最終変更
なーお  長老   投稿数: 1746

hiro1613さん

解決したようで、よかったです。
おかげで不具合の修正ができました。ご報告に感謝いたします。

xupdateの更新は、他のソースの変更も併せて実施しますので、しばらく先になりそうです。

MariaDBのバージョンの件は、それ自体が原因かどうかはわかりません。設定の違いやコンパイルオプションなどで違ってくる可能性もありますので。

当サイトも、どうにか KUSANAGI(CentOS7.4: nginx+php7.0+MariaDB10.0)に移行できました。 まだ不具合残ってますが、少しづつ直してゆきます。
移行前の不具合だった、post送信がすごく時間がかかるのが解消され、表示速度も上がって満足です。

投票数:0 平均点:0.00
返信する

このトピックに投稿する

題名
ゲスト名
投稿本文
  条件検索へ