TF
margu****@gaia*****
2007年 4月 8日 (日) 06:03:45 JST
オークションサイトで行われている「評価」に極悪な暴力を感じ、自分のショップを開設しようとしている藤田と申します。 今回の問題は商品カテゴリ内の商品を一覧表示しようとすると、次のエラーメッセージが表れるという事象です。 1054 - Unknown column 'p.products_id' in 'on clause' select count(*) as total from products_description pd, products p left join manufacturers m on p.manufacturers_id = m.manufacturers_id, products_to_categories p2c left join specials s on p.products_id = s.products_id where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '4' and p2c.categories_id = '8' これは自分の商品登録をする前、すなわちoscをインストールした直後に見ることのできる、手つかずのcatalog/default.phpですでに現れます。したがって登録の仕方が問題ではありません。 上記メッセージ最後のcategories_id = '8'の' '内の数値は、フロントページ上でどのカテゴリを選択するかによって変わってきます。 - OSはVine 4.0 - MySQLは5.0.27 - Apache、PHPはVineのSynapticパッケージマネージャがインストールしてくれるもの - 参考書は田村敏彦「osCommerceによるオンラインショップ構築テクニック」です(以下「本」)。 - my.cnfは/usr/share/doc/MySQL-5.0.27/my-medium.cnfを/etc/my.cnfにコピーしています。 4.0のときはFedore Core 1で、「本」附属のCDからすべてをインストールし、何ら問題なく登録作業を実験できていました。 my.cnfも当然自動生成されておりましたので、5.0で上記のような変更点があるなど、夢にも思わず、文字化けで大騒ぎいたしました。 新しい方法では、自分でコピーして作らなければならない分、バックアップを取り忘れても、オリジナルが無傷で取り出せるという点で、歓迎すべき変更点ではないかと思いますが、このコピー生成手順がわかるまでには、多大な時間を検索に費さねばなりませんでした。 それはともかく、my.cnfでdefault-character-set=ujisを適切に設定すれば、文字化けはなくなります。(ついでながら、Vine 4.0に「本」収載のMySQL4.0を載せますと、「セグメンテーション違反」が続発して、まったく用をなしません。 ) my.cnfへの、この設定方法をご指導下さったかたも、5.0では文字化け解消だけではすまないのではないかとおっしゃてました。 今回の問題はそれなんでしょうか。 MySQLに作成したdatabaseのテーブル情報(mysql> show tables;)は products products_attributes products_attributes_download products_description products_notifications products_options products_options_values products_options_values_to_products_options products_to_categories カラム情報(mysql> desc テーブル名;)では、上記products関係のテーブル内にproducts_idというFieldは確認できますが、冒頭のエラーメッセージにある p.products_idやs.products_idなど、products_idの前に何かが付随する形ものは一つもありませんでした。 もし簡単に、「どこそこをこう書き換えよ」くらいの修正で解決できるのであれば、どなたかその方法をご教示いただけないでしょうか。 そうではなく、MySQLやPHPを一から勉強して、ソースなのかスクリプトなのかを書けるようにならなければ、解決できないというのでしたら、それはそれで「一から勉強」とご指摘いただけないでしょうか。できれば、特に何をどう調べ、何ができなければならないかをご指導いただけると非常に助かります。 LinuxはRedhat 8とその後のFedora Core 1を、正味の時間にして1カ月くらい経験した程度です。Cで、テキストファイルから、キーワードを含む用例集を抽出するくらいのプログラムは書けます(いわゆるconcordanceの作成)。 PHPもMySQLもまったく知りません。php.iniとmy.cnfを言われた通りに書き換えるだけです。なぜそうするのか理屈がまったくわかっていませんし、MySQLがデータベースだと聞いても、まったく理解できません。 昔、まだ8ビット機でMS-DOSだったころ、dBASE IIIを使って、大きな国際会議の機材、人員の出入りをすべて管理したことがあります。リレーショナルDBの原理・実務能力・プログラミングは熟知していますが、MySQLはまったく未勉強です。 以上、よろしくお願いいたします。