Domanda

In qualche modo group_concat è in grado di arrotondare sei "pagine" di un articolo (ogni memorizzato come testo) e farle saltare in un unico MEDIUMTEXT senza perdere i dati, ma ci sono alcuni di una pagina articoli che sono più lunghi del normale (ma ancora ovviamente inseriscono all'interno del tipo di dati TEXT) che perdono una quantità significativa di dati. Qualcuno sa che cosa succede?

query originale:

SET group_concat_max_len = 16000000;
UPDATE Threads t SET t.Content = (SELECT GROUP_CONCAT(a.Content ORDER
BY a.PageID SEPARATOR '<!-- pagebreak -->') FROM MSarticlepages a
WHERE a.ArticleID = t.MSthreadID GROUP BY a.ArticleID);

Grazie ancora per aver dedicato del tempo per guidare la mia auto ignorante!

È stato utile?

Soluzione

Il manuale di riferimento per MySQL 5.0 ( http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat ) afferma:

  

Inizio con MySQL 5.0.19, il tipo   restituito da group_concat () è sempre   VARCHAR a meno group_concat_max_len è   maggiore di 512, nel qual caso, essa   restituisce un BLOB. (In precedenza,   restituito un BLOB con   group_concat_max_len maggiore di 512   solo se la query incluso un ORDER BY   clausola.)

In base a questi dati, il tipo di ritorno sarebbe BLOB, non MEDIUMTEXT. Wwould essere possibile che la concatenazione in totale è di oltre 2 ^ 16 (65536 byte), che è il limite per BLOB?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top