PDA

Shop Support News Archive - Shopbetreiber News -> Forum : ECB Shop: nach Kategorieauswahl SQL-Fehler


espe
11.02.2010, 02:09
Hi, nach UPD auf 1.08:
entweder gibt es trotz vorhandener Artikel bei Klick auf Kategorie den Hinweis, dass keine Artikel i.d. Kat vorhanden (obwohl Anzahl in der Klammer ist)

oder folgende Fehleranzeige oben:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 25

-- includes/modules/default listing_sql SELECT p. , pd.products_name, pd.products_short_description, pd.products_description FROM (SELECT p.products_id, p.products_model, p.products_ean, p.products_quantity, p.products_weight, p.products_image, p.products_price, s.specials_new_products_price, if(s.specials_new_products_price < IFNULL(p2cs.personal_offer, p.products_price), s.specials_new_products_price, IFNULL(p2cs.personal_offer, p.products_price)) best_price, p.products_vpe, p.products_vpe_status, p.products_vpe_value, p.products_discount_allowed, p.products_tax_class_id, p.products_fsk18, p.products_shippingtime, p.products_sort, p.manufacturers_id, m.manufacturers_name, p.products_date_added, s.specials_date_added FROM products p JOIN products_to_categories p2c ON p.products_id = p2c.products_id AND p2c.categories_id = 112 LEFT JOIN manufacturers m ON p.manufacturers_id = m.manufacturers_id LEFT JOIN specials s ON p.products_id = s.products_id LEFT JOIN products_to_customers_status p2cs ON p.products_id=p2cs.products_id AND p2cs.customers_status = 0 WHERE p.products_status = 1 AND customers_status=1 ) p JOIN products_description pd on p.products_id = pd.products_id and pd.language_id = 2 ORDER BY

[ECB SQL Error]

Das ist wohl der Code in der Datei
root/includes/modules/default.php ab Zeile 217:
$listing_sql = '-- includes/modules/default listing_sql
SELECT
p. ,
pd.products_name, pd.products_short_description, pd.products_description
FROM
(SELECT
p.products_id, p.products_model, p.products_ean,
p.products_quantity, p.products_weight, p.products_image,
p.products_price,
s.specials_new_products_price,
if(s.specials_new_products_price < IFNULL(p2cs.personal_offer, p.products_price), s.specials_new_products_price, IFNULL(p2cs.personal_offer, p.products_price)) best_price,
p.products_vpe, p.products_vpe_status, p.products_vpe_value,
p.products_discount_allowed, p.products_tax_class_id,
p.products_fsk18, p.products_shippingtime, p.products_sort,
p.manufacturers_id, m.manufacturers_name,
p.products_date_added, s.specials_date_added
FROM '.TABLE_PRODUCTS.' p';
if(isset($catId)) {
$listing_sql .= '
JOIN '.TABLE_PRODUCTS_TO_CATEGORIES.' p2c ON p.products_id = p2c.products_id AND p2c.categories_id = '.(int)$catId;
}
if (isset($manuId)) {
$listing_sql .= '
JOIN '.TABLE_MANUFACTURERS.' m ON p.manufacturers_id = m.manufacturers_id AND m.manufacturers_id = '.(int)$manuId;
} else {
$listing_sql .= '
LEFT JOIN '.TABLE_MANUFACTURERS.' m ON p.manufacturers_id = m.manufacturers_id';
}
Ich bin kein Programmierer + könnte in 100 Jahren nicht sehen, was da falsch sein kann, ist doch der originale Code....
Danke für Eure Hilfe

espe
16.02.2010, 18:51
Leider hat mein Thema keine Beachtung bzw. keine Hilfestellung bekommen.

Habe jetzt mangels eigener Kompetenz zur Fehlerbehebung

die datei
includes/modules/default.php der ECB-Version 1.0.7 eingespielt (@version $Id: default.php 1063 2010-01-05 17:21:42Z joerg $)

die Version der 1.0.8. war (@version $Id: default.php 1074 2010-01-10 22:11:35Z joerg $ )

und es wird alles wieder angezeigt.

Allerdings weiss ich nicht, was dann vielleicht wieder nicht laufen wird....

Weiß jemand da etwas Hilfestellung?
Danke

quante
17.02.2010, 01:40
Ich klink mich da mal ein: mich hats auch erwischt... hab von 1.04 in Schritten auf 1.08 upgedatet - jetzt steht der Shop still. :wacko:

Bei Aufruf einer Unterkategorie kommt die Meldung:

"1146 - Table '....TABLE_PERSONAL_OFFERS_BY1' doesn't exist"

....ich vermute mal da ist ein DB-Update nicht richtig gelaufen, aber welches? Es kam immer die Meldung "DB erfolgreich upgedatet"

Live ist die Meldung hier zu sehen (http://www.lernsoftware.de/lernsoftware/index.php?cPath=927_928_929&XTCsid=505674d199ddef3ef4cc5edc110263f8)
Dahin kommt man, wenn man hier "Pflanzen" anklickt (http://www.lernsoftware.de/lernsoftware/index.php?cPath=927_928&XTCsid=505674d199ddef3ef4cc5edc110263f8).

SMT WebServices
17.02.2010, 01:50
schon mal mit lesen probiert?
http://wiki.ecb-shop.de/index.php/Version:ECB1.0.8

quante
17.02.2010, 02:20
schon mal mit lesen probiert?
http://wiki.ecb-shop.de/index.php/Version:ECB1.0.8

thx... der Installer bringt nur die Meldung:
"Sie scheinen bereits eine Shop-Installation incl. laufender Datenbank zu haben." - es ist nix weiter anklickbar.

...oder muss ich da manuell über install_step1.php installieren?

Der direkte Aufruf der install_update.php bringt die Meldung:
"Ihre DB ist auf dem aktuellen Stand."

berny [Offline]
17.02.2010, 02:44
Ich klink mich da mal ein: mich hats auch erwischt... hab von 1.04 in Schritten auf 1.08 upgedatet - jetzt steht der Shop still. :wacko:

Bei Aufruf einer Unterkategorie kommt die Meldung:

"1146 - Table '....TABLE_PERSONAL_OFFERS_BY1' doesn't exist"

....ich vermute mal da ist ein DB-Update nicht richtig gelaufen, aber welches? Es kam immer die Meldung "DB erfolgreich upgedatet"

Live ist die Meldung hier zu sehen (http://www.lernsoftware.de/lernsoftware/index.php?cPath=927_928_929&XTCsid=505674d199ddef3ef4cc5edc110263f8)
Dahin kommt man, wenn man hier "Pflanzen" anklickt (http://www.lernsoftware.de/lernsoftware/index.php?cPath=927_928&XTCsid=505674d199ddef3ef4cc5edc110263f8).

Hast du überhaupt mal nachgeschaut, ob diese Tabelle überhaupt existiert?
Letztlich heißt ja diese Meldung, dass diese Tabell nicht existiert.
Ist das eine Standard ECB-Tabelle oder ein Zusatz von einem Modul...

quante
17.02.2010, 03:08
Hast du überhaupt mal nachgeschaut, ob diese Tabelle überhaupt existiert?
Letztlich heißt ja diese Meldung, dass diese Tabell nicht existiert.
Ist das eine Standard ECB-Tabelle oder ein Zusatz von einem Modul...

yepp, die Meldung ist korrekt - die Tab gibts nicht. Das muss eine neue ECB-Standardtabelle sein, sonst würde es ja nicht angemeckert werden. Mein Shop kommt ohne zusätzliche Module aus.

Ich denke mal, wenn mir jemand sagen kann wie ich den 1.08-Installer in Gang bekomme... dann wäre schon viel erreicht.

SMT WebServices
17.02.2010, 05:46
lad dir mal die vollversion und tausch das installer verzeichnis aus, ich meine ich hätte mal was in der richtung irgenwo gelesen

espe
17.02.2010, 09:32
schon mal mit lesen probiert?
http://wiki.ecb-shop.de/index.php/Version:ECB1.0.8

Das hatte ich gleich am Anfang gemacht und gem Anweisung AND customers_status='.(int)$customers_status überall eingefügt. Der Fehler hatte damit nichts zutun.
Auch hab ich aus einer anderen Installation die Tabellen PERSONAL_OFFER_BY_CUSTOMER_STATUS_
in meine DB importiert, sodaß es auch nicht mehr an fehlenden Tabellen liegen kann.

espe
17.02.2010, 09:35
xrone schrieb mir eine PM:
[...]pd.products_id and pd.language_id = 2 ORDER BY (Hier wird die variable $sort nicht übergeben.

ich denke hier ist beim update was falsch gelaufen

espe
17.02.2010, 09:46
yepp, die Meldung ist korrekt - die Tab gibts nicht.
Ich hab Dir meine selbst in die DB eingespielten Tabellen angehängt, da es bei mir 8 Kundengruppen gibt, sind es die nrn 0 bis 7

quante
17.02.2010, 11:54
Ich hab Dir meine selbst in die DB eingespielten Tabellen angehängt, da es bei mir 8 Kundengruppen gibt, sind es die nrn 0 bis 7

Vielen Dank :-) Habe ich gleich eingespielt - jetzt sind sie da.

Leider kommt jetzt die Meldung (Link (http://www.lernsoftware.de/lernsoftware/index.php?cPath=927_928_929&XTCsid=84205ff2ddc3975f2ef999e3a98448c9)):

"1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 25

-- includes/modules/default listing_sql SELECT p. , pd.products_name, pd.products_short_description, pd.products_description FROM (SELECT p.products_id, p.products_model, p.products_ean, p.products_quantity, p.products_weight, p.products_image, p.products_price, s.specials_new_products_price, if(s.specials_new_products_price < IFNULL(p2cs.personal_offer, p.products_price), s.specials_new_products_price, IFNULL(p2cs.personal_offer, p.products_price)) best_price, p.products_vpe, p.products_vpe_status, p.products_vpe_value, p.products_discount_allowed, p.products_tax_class_id, p.products_fsk18, p.products_shippingtime, p.products_sort, p.manufacturers_id, m.manufacturers_name, p.products_date_added, s.specials_date_added FROM products p JOIN products_to_categories p2c ON p.products_id = p2c.products_id AND p2c.categories_id = 929 LEFT JOIN manufacturers m ON p.manufacturers_id = m.manufacturers_id LEFT JOIN specials s ON p.products_id = s.products_id LEFT JOIN products_to_customers_status p2cs ON p.products_id=p2cs.products_id AND p2cs.customers_status = 0 WHERE p.products_status = 1 ) p JOIN products_description pd on p.products_id = pd.products_id and pd.language_id = 2 ORDER BY

[ECB SQL Error]"


Ich habe KEINE großartigen Änderungen im Shop. Bei mir ist alles Standard-Installation. Warum gibt's da einen SQL-Error bei einem Unterkategorie-Aufruf? Produkte und Hauptkategorien funzen.

SMT WebServices
17.02.2010, 14:20
personal_offers_by_customers_status_x ist das alte format
die daten sind jetzt alle in EINER tabelle unter gebracht und die heist personal_offer_to_customers_status (oder so ähnlich)
kontrolliere auch mal alle dateien die im update enthalten sind auf dem server, ob die dass "last modified" datum des updates haben, das sieht mir eher nach nem dateifehler aus

quante
17.02.2010, 14:52
die daten sind jetzt alle in EINER tabelle unter gebracht und die heist personal_offer_to_customers_status (oder so ähnlich)
kontrolliere auch mal alle dateien die im update enthalten sind auf dem server, ob die dass "last modified" datum des updates haben, das sieht mir eher nach nem dateifehler aus

Danke für die Info. Dateifehler scheidet wohl aus. Die sind alle da, ich habe bereits mehrfach die 1.08-Dateien hochgeladen. Die Fehlermeldung "1064 - You have an error in your SQL syntax;... at line 25" soll wohl heißen, dass in der irren langen Abfrage was nicht stimmt.

Was definitiv NICHT gefunzt hat, ist das DB-UPDATE. Die NEUE "personal_offer_to_customers_status" ist NICHT da. Obwohl der Installer alles erfolgreich gemeldet hat. Leider lässt er sich nicht ein zweites Mal starten - weil ja seiner Meinung nach alles stimmt.

Um die Kuh vom Eis zu bekommen zwei Fragen:

1.) Wie kann ich den 1.08-Installer dazu bewegen nochmal zu starten? (Welche Einstellungen fragt der ab / wie kann ich die zurück setzen?)

2.) Wenn sich das DB-Update auf die Neuanlage der "personal_offer_to_customers_status" beschränkt - kann jemand bitte den SQL-Code hier posten? Dann mache ich das manuell.

2.) Gibt es einen ECB-Debug-Modus? Wie starte ich den? Nur so lässt sich herausfinden, warum der MySQL-Syntax-Fehler auftaucht.

espe
17.02.2010, 16:00
Mann mann, Deine Fehler laufen wie meine, und ich hab irgendwie das Gefühl, dass wir hier mit BUGs kämpfen, die man auf Anwenderbasis nicht wirklich herausfinden kann.

Ich seh hier schon meine Felle davonschwimmen, das je wieder richtig zum Laufen zu bekommen....:wacko:

espe
17.02.2010, 16:13
Hab jetzt herausgefunden, dass die Tabellen mit der fortlaufenden Nummer durch den installer der Version 1.0.7. rausgeflogen sind, hab aber nichts annähernd passendes in dem sql-Dump der 1.0.7 als Ersatz gefunden
DROP TABLE if EXISTS personal_offers_by_customers_status_0;
DROP TABLE if EXISTS personal_offers_by_customers_status_1;
DROP TABLE if EXISTS personal_offers_by_customers_status_2;
DROP TABLE if EXISTS personal_offers_by_customers_status_3;

quante
17.02.2010, 16:40
Mann mann, Deine Fehler laufen wie meine, und ich hab irgendwie das Gefühl, dass wir hier mit BUGs kämpfen, die man auf Anwenderbasis nicht wirklich herausfinden kann.


Da hast du recht. Aber schön, dass wir nicht alleine sind und das ECB-Forum haben. :icon_super: Ich hoffe auf die Profis und versuche möglichst brauchbare Ansätze zu liefern.

Wurden die Daten in 1.07 nicht übernommen in die neue "personal_offers_by_customers_status"? - Sprich alle Daten weg?

espe
17.02.2010, 16:47
An Quante
und die heist personal_offer_to_customers_status (oder so ähnlich)


Ich schrieb doch schon, in dem Dump von der 1.0.7 ist nichts annähernd ähnliches zu finden, und unserer obiger Helfer schreibt ja "oder so ähnlich...

Ist doch echt zum, sorry, sehr unweiblich, passt eigentlich nicht zu meinem restlichen Erscheinungsbild--> :icon_kotzen:

espe
17.02.2010, 16:58
Die neue Tabelle heißt wohl
products_to_customers_status und stammt aus dem Dump der 1.0.8.

Und ist in meiner DB drin, in Deiner bestimmt auch.

SMT WebServices
17.02.2010, 17:14
wie ich schon sagte, gerade wenn die tabelle vorhanden ist, alle dateien aus die im update enthalten sind auf dem server kontrollieren ob dort auch die versionen aus dem update vorhanden sind, oder ob da noch alte versionen liegen (last modified date)

wenn ssh zugang vefügbar kann folgendes da recht nützlich sein:
http://www.mydigitallife.info/2006/01/19/find-files-that-are-modified-today-or-since-certain-time-ago-in-unix/

quante
17.02.2010, 17:38
wie ich schon sagte, gerade wenn die tabelle vorhanden ist, alle dateien aus die im update enthalten sind auf dem server kontrollieren ob dort auch die versionen aus dem update vorhanden sind, oder ob da noch alte versionen liegen (last modified date)



Wie gesagt: alle Dateien auf neuestem Stand. Filezilla ist beim Überbügeln ziemlich gnadenlos.

Die Meldung sagt nach wie vor MySQL-SYNTAX-Fehler (http://www.lernsoftware.de/lernsoftware/index.php?cPath=927_928_929&XTCsid=84205ff2ddc3975f2ef999e3a98448c9).

"1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 25"

SMT WebServices
17.02.2010, 17:41
welches ftp prog man verwendet ist dafür ziemlich unerheblich, wenn der server sagt "nee die datei darfst du nicht überschreiben" dann kann der client da garnichts ausrichten.

quante
17.02.2010, 17:59
welches ftp prog man verwendet ist dafür ziemlich unerheblich, wenn der server sagt "nee die datei darfst du nicht überschreiben" dann kann der client da garnichts ausrichten.

Schon klar... Filezilla protokoliert aber genau, wenn was nicht klappt. Habe die Dateien auch nochmal kontrolliert - alle 1.08er sind da. Ich gehe jedem Hinweis sofort nach - schließlich ist das ein produktiver Shop.

Abgesehen davon bin ich kein Anfänger was Web angeht - mein Hauptbetätigungsfeld ist CMS.

quante
20.02.2010, 00:33
Sorry... der Shop steht, es geht nach dem 1.08-Update nicht weiter - der Fehler (http://www.lernsoftware.de/lernsoftware/index.php?cPath=927_928_929&XTCsid=dd2a1f62fcc2b76efe15c68e79bdf357) lässt sich nicht vertreiben.

Jetzt habe ich die 1.08-Vollversion nochmal drüber gebügelt, Template habe ich auf gunnart geändert,- es bringt nix. :angry2: Laut Install-Rückmeldung alles bestens.

Kann mir bitte einer der Entwickler bei der Interpretation der Meldung helfen?
"1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 25 -- includes/modules/default listing_sql.... "

Alternativ: gibts einen DEBUG-Modus? Wie schalte ich den ein?

Wie lässt sich die 1.08 Installations-Routine ein 2. mal komplett starten? An welchen Stellen muss ich Einträge ändern?

Es handelt sich um einen produktiven Shop, der steht!

:smiley_emoticons_he :smiley_emoticons_he :smiley_emoticons_he

berny [Offline]
20.02.2010, 01:58
Hast du ein sql-Programm, wo du die sql direkt ausführen kannst? (zB heidisql)
Dann könntest du mal sehen, was diese Abfrage überhaupt bewirkt.

nach dem order by fehlt ja auch was, oder ?

Ansonsten tippe ich erst mal auf eine falsch mysql-Version...

Bin aber kein ECB- bzw sql-Guru, ist halt nur eine Vermutung meinerseits.

quante
20.02.2010, 15:13
Hast du ein sql-Programm, wo du die sql direkt ausführen kannst? (zB heidisql). Dann könntest du mal sehen, was diese Abfrage überhaupt bewirkt. nach dem order by fehlt ja auch was, oder ?

Richtig... die SQL-Abfrage ist eh riesig lang. Ich nehme an, sie wird gekürzt wieder gegeben, ist also für mich nicht nachvollziehbar. WOHER kommt die Meldung? :-(


Ansonsten tippe ich erst mal auf eine falsch mysql-Version...
Bin aber kein ECB- bzw sql-Guru, ist halt nur eine Vermutung meinerseits.

Das hatte ich zuerst auch vermutet... aber ich konnte mir nicht vorstellen, dass von einem zum anderen ECB-Release eine andere 5.x- Version ohne Ankündigung verwendet wird. Na denn, wenn Version 5.0.12 nicht ausreicht.... dann mache ich mal nen Update auf MySQL 5.5. Ich habe einen Rootserver, da geht so was :)

Es bleiben also weiterhin meine Fragen offen:

Kann mir bitte einer der Entwickler bei der Interpretation der Meldung helfen (http://www.lernsoftware.de/lernsoftware/index.php?cPath=927_928_929&XTCsid=dd2a1f62fcc2b76efe15c68e79bdf357)? Sie erscheint sobald
PRODUKTE GELISTET werden sollen. WO muss ich da nach graben???
"1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 25 -- includes/modules/default listing_sql.... "
Alternativ: gibts einen DEBUG-Modus? Wie schalte ich den ein?
Wie lässt sich die 1.08 Installations-Routine ein 2. mal AUSFÜHRBAR starten? An welchen Stellen muss ich Einträge ändern?

Es handelt sich um einen produktiven Shop, der steht!

:smiley_emoticons_he :smiley_emoticons_he :smiley_emoticons_he

quante
20.02.2010, 19:52
Sodele... nach dem mir hier bisher keiner helfen konnte, habe ich es auf eigene Faust versucht. An der MySQL-Version liegt es nicht.

Also habe ich Ecombase ECB 1.08 VOLLVERSION komplett NEU installiert. Testprodukte und Kategorien angelegt: es läuft. Produkte + Kategorien dann wieder per SQL für den nächsten Schritt gelöscht.

Anschließend habe ich aus der alten DB alle Daten in die NEU angelegte DB per SQL importiert.

Ergebnis: FEHLER WIEDER DA!

Offensichtlich hat Ecombase ECB 1.08 Probleme mit bestimmten Daten-Konstellationen - die dazu führen, dass generell keine Produktlistings mehr durchgeführt werden.

quante
20.02.2010, 21:35
Die Version 1.08 ist fehlerhaft! Die Ursache ist tatsächlich ein SYNTAX-Fehler, es fehlen die [] hinter einem Befehl. Das habe ich in einem Thread über eine nicht funzende lokale Installation gefunden:

Da ist dem Yogi was durchgerutscht...
Schau mal includes/modules/default.php, Zeile 205 muß lauten:
$sorting_data[] = $row;


Warum dass mit einer Vollinstallation und neuen Daten funzt - und mit übernommenen Daten nicht: k.P. - die fehlerhafte Datei ist aus der Vollversion.

Morgen werde ich mein Backup zurückspielen und das beim upgedateten Ecombase ECB-Shop 1.08 einbauen. Hoffe mal, das klappt und berichte dann wieder.

quante
21.02.2010, 18:11
In 1.08 ist die includes/modules/default.php defekt.

Ich habe hier die in Zeile 205 korrigierte default.php angehängt.
Runterladen - auspacken - reinkopieren ...und schon funzt ECB Ecombase 1.08 auch nach einem Update

:smiley_emoticons_hu

717

quante
22.02.2010, 18:34
@ADMIN / MOD: Bitte Thread-Status auf [GELÖST] setzen.

birko
11.03.2010, 08:49
Klappt hier mit aber auch nicht, mit den Staffelpreisen

yogi70
19.04.2010, 15:59
Bei Euch fehlt in den jeweiligen Kategorien die Sortierbedingung.

diese kann man über phpmyadmin z.b. über folgendes SQL auf "sort-order" setzten:

update categories set products_sorting='p.p.products_sort',
products_sorting2='ASC' where products_sorting is null or products_sorting2
is null;

Dann sollte der fehler auch weg sein.

Derzeit verstehe ich noch nicht wieso
- der fehler vorher nicht aufgetreten ist.
- wieso die SortOrder bei Euren Kategorien fehlt.

simplemore
05.05.2010, 05:21
Bei Euch fehlt in den jeweiligen Kategorien die Sortierbedingung.
diese kann man über phpmyadmin z.b. über folgendes SQL auf "sort-order" setzten:
update categories set products_sorting='p.p.products_sort',
products_sorting2='ASC' where products_sorting is null or products_sorting2
is null;
Dann sollte der fehler auch weg sein.
Derzeit verstehe ich noch nicht wieso
- der fehler vorher nicht aufgetreten ist.
- wieso die SortOrder bei Euren Kategorien fehlt.
ECB 1.08 , Gunnart Template
Geht nicht, sortiert immer nur nach Namen, keine Änderung bei anderer Auswahl.
EIGENTLICH hatte ich es nach Sortierung eingestellt, aber egal wie, es geht NUR nach Namen.

Als Admin angemeldet funktioniert es aber, weswegen es mir bisher garnicht aufgefallen war .
Das einzige, was ich an der frischen Version geändert habe, war die Fehlerbeseitigung zum Anlegen neuer Kundengruppen und DAS geht jetzt.

Selbst den Bug mit der erweiterten Suche hab ich noch nicht versucht zu korrigieren ( da gab es noch keine Lösung, oder hab ich die übersehen ? )
Das war die hier :
1054 - Unknown column 'p.best_price' in 'order clause'

und wenn man es mal bedenkt, könnte das zusammenhängen , weil beides sich um order dreht, order, äh, oder ?