bestlong 怕失憶論壇

標題: OSC 出現 1054 - Unknown column 'p.products_id' in 'on clause' 錯誤 [打印本頁]

作者: bestlong    時間: 2010-9-20 00:25     標題: OSC 出現 1054 - Unknown column 'p.products_id' in 'on clause' 錯誤

測試移轉 OSCommerce 到 MySQL5 環境,在點選商品分類時,某些分類會出現了下列 SQL 語法問題

1054 - Unknown column 'p.products_id' in 'on clause'

select count(p.products_id) 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 = '1'

[TEP STOP]

將該 SQL 整理後如下
  1. select count(p.products_id) as total
  2. from products_description pd
  3. , products p
  4. left join manufacturers m on p.manufacturers_id = m.manufacturers_id
  5. , products_to_categories p2c
  6. left join specials s on p.products_id = s.products_id
  7. where p.products_status = '1'
  8.   and p.products_id = p2c.products_id
  9.   and pd.products_id = p2c.products_id
  10.   and pd.language_id = '4'
  11.   and p2c.categories_id = '1'
複製代碼
有點奇怪的感覺。不過,此 SQL 在 MySQL 4.3 下是會正常執行,真的很隨性阿。
作者: bestlong    時間: 2010-9-20 00:32

依照 Error Message - 1054 - Unknown column 'p.products_id' in 'on clause' 的說法,需要修改 index.php 與 advanced_search_result.php 兩個檔案。

保存原文的附件,找時間再試著修改看看。

在 9 Sep 2008 回應的附件
How to fix 1054-problem.zip (2.75 KB, 下載次數: 650)

在 11 Nov 2006 回應的附件
1054-problem.zip (923 Bytes, 下載次數: 574)

附件: How to fix 1054-problem.zip (2010-9-20 00:32, 2.75 KB) / 下載次數 650
http://www.bestlong.idv.tw/forum.php?mod=attachment&aid=MTYzfDk3MzE1ZGMyfDE3NDYxMzIyNTR8MA%3D%3D

附件: 1054-problem.zip (2010-9-20 00:34, 923 Bytes) / 下載次數 574
http://www.bestlong.idv.tw/forum.php?mod=attachment&aid=MTY0fDc3OTY5MTEwfDE3NDYxMzIyNTR8MA%3D%3D
作者: bestlong    時間: 2010-9-20 00:37

官方論壇有個討論串 http://forums.oscommerce.com/top ... ts-id-in-on-clause/
作者: bestlong    時間: 2010-9-22 00:25

目前我是沒有依據上面所列的說明來處理
因為也不確定手頭上在處理的系統版本有多少差異
畢竟是有被人工修改過的狀況
還是直接自行修改
其實只要對 SQL 語法有足夠的概念
將 index.php 與 advanced_search_result.php 兩個程式內的 SQL 指令調整一下
將下列舊版 MySQL 可以接受的語法結構
  1. select f1, f2, f3
  2. from T1 A, T2 B
  3. left join T3 C on A.id = C.id
  4. where A.id = '1'
  5.   and A.id = B.id
複製代碼
修改成為
  1. select f1, f2, f3
  2. from T1 A
  3.      join T2 B on A.id = B.id
  4. left join T3 C on A.id = C.id
  5. where A.id = '1'
複製代碼
就可以轉換到 MySQL 5.X 版環境上跑了。
不過以前真的沒仔細去看 OSC 在 SQL 部分的程式碼。
現在幫朋友作移轉而真的看了後,會有很驚嚇的感受。
真的是系統能跑且正確就好。
作者: twosc    時間: 2011-3-1 10:25

2011 年的 OSC 2.3.1 台灣中文版已開放下載 ,
建議改裝新版的試試.

請參考 http://www.twosc.com
台灣 OSC 社群




歡迎光臨 bestlong 怕失憶論壇 (http://www.bestlong.idv.tw/) Powered by Discuz! X1.5