[Tep-j-general] データベース移行時に問題があります

アーカイブの一覧に戻る

Ryuta Fujishiro fsb20****@yahoo*****
2010年 2月 17日 (水) 13:24:41 JST


皆様お世話になります、ふじしろと申します。

まずは環境から(レンタルサーバーです)
mysql4.0.27max
php4.3.9
phpmyadmin2.10.0.2

Mysql5に移行する為に、この環境からデータをdumpしたのですが
少々の書き換えでは実用レベルに至らぬ為保留。

気を取り直して元の環境に戻そうとすると顧客管理画面にエラーが出ており、顧客の情報が真っ白(フォームフィールドは表示され中が空欄)。データベースを確認するとレコードは存在しているが、エラーの内容は顧客のidを配列として受け取れていない様子。

ちなみにエラーメッセージは以下の通りです。

Warning:  reset(): Passed variable is not an array or object in /home/xxx/xxxxxx.com/public_html/admin/includes/classes/object_info.php on line 17
 
 Warning:  Variable passed to each() is not an array or object in /home/xxx/xxxxxx.com/public_html/admin/includes/classes/object_info.php on line 18
                                         
本家?oscommerce.comとこちらのメーリングリストを探索したのですが
解決には至っておらず、まだまだトライ&エラー中です。

原因は突き止めたものの、はたしてコレが原因か?という状態です。
自分の疑っている所はcustomersのテーブルのcustomer_idの箇所。

デフォルトの状態の構造をチェックすると、auto_increment値が設定されているのでOptimal_fieldtypeはENUM('1','2'.....) NOT NULLとなっているのですが、ここに800件程のデータをsqlでインポートするとOptimal_fieldtypeがSMALLINT(3) UNSGNED NOT NULLとなってしまいます。

レコード自体は目視して無事インポートされている様子ですが、おそらくMysqlの互換性が合わずauto_incrementを含むテーブル構造に変化をもたらしている模様。(Mysql4系のマニュアルより推測)

試した事では
●古いバージョンのphpmyadmin(2.6.0-pl3)でエクスポート=>インポート(エクスポートのオプションmysql40互換)

●customersのテーブルを空にしてレコードの入れ直し(oscommerce.comではコレで治るという人が何人か居ました)

●customersのテーブルを空にしてレコードの入れ直し(数人ずつ入れると正常に入ってゆくが、61人目からOptimal_fieldtypeがSMALLINT(3) UNSGNED NOT NULLとなってしまいます。試しに61人目を挟んで60人分のレコードを入れても正常。)

●無駄とは思いながら/admin/customers.phpの
$customer_info = tep_array_merge($country, $info, $reviews);
$cInfo_array = tep_array_merge($customers, $customer_info);
を
$customer_info = tep_array_merge((array)$country, (array)$info, (array)$reviews);
$cInfo_array = tep_array_merge((array)$customers, (array)$customer_info);
に書き換えてみた。

どれも効果無かったです。

長くなって申し訳ありませんが、
同じような症状に関してご存知の方
アドバイスおねがいします。
   
-------------- next part --------------
HTMLの添付ファイルを保管しました...
ダウンロード 



Tep-j-general メーリングリストの案内
アーカイブの一覧に戻る