Nyheter / Dokumentasjon / eZ Publish / eZ tips & triks / MYSQL-spørringer og eZ DB info

MYSQL-spørringer og eZ DB info

Hente ut innhold fra ez-pub-db direkte til fil:

SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

http://dev.mysql.com/doc/refman/4.1/en/select.html

Endre en attributt fra ISO-8859-1 til UTF-8 basert på attributt-id:

UPDATE ezcontentobject_attribute 
SET data_text = replace(data_text,'iso-8859-1','utf-8') 
WHERE contentclassattribute_id=219;

Dersom man ved en publisering av klasse endringer får en feil kan det være at man får en ny versjon av klassen men som mangler data. Da vil man ikke kunne redigere klassen lenger og vil måtte rydde opp i DB. Klasser er definert i 4 tabeller:

ezcontentclass
ezcontentclass_attribute
ezcontentclass_name
ezcontentclass_classgroup

For å se hva som ligger der og i hvilke versjoner kan man bruke denne spørringen for å se samlet innhold:

SELECT c.id, ca.id,ca.identifier, c.version,cn.name,
cg.group_id, cg.group_name
FROM ezcontentclass as c  
LEFT JOIN ezcontentclass_attribute as ca ON c.id = ca.contentclass_id  
LEFT JOIN ezcontentclass_name as cn ON c.id = cn.contentclass_id 
LEFT JOIN ezcontentclass_classgroup as cg ON c.id = cg.contentclass_id  
WHERE c.id = <klasse id man editerte>;

Det du da vil se er at den siste versjonen der har noe tomt innhold eller noe slik, det er denne versjonen vi vil slette, det må så gjøres i alle 4 tabellene:

DELETE FROM ezcontentclass WHERE id = <klasseid>
and version = <versjonen man skal slette>;
DELETE FROM ezcontentclass_attribute WHERE contentclass_id = <klasseid>
and version = <versjon>;
DELETE FROM ezcontentclass_name where contentclass_id = <klasse id>
and contentclass_version = <versjon>;
DELETE FROM ezcontentclass_classgroup where contentclass_id = <klasse id>
and contentclass_version = <versjon>;

Dersom du må nullstille passordet for admin kan det gjøres som følger (det nye blir nå ’publish’):

UPDATE ezuser SET password_hash = 'c78e3b0f3d9244ed8c6d1c29464bdff9' 
WHERE contentobject_id=[id til admin bruker];

Bruk følgende for å liste ut alle brukerne og finne id til admin:

SELECT * FROM ezuser;

For å renske ezsessions tabellen for gamle sesjoner kan følgende spørring kjøres:

DELETE FROM ezsession WHERE expiration_time < [timestamp for nå]