Perdita di dati in MySQL con MEDIUMTEXT e pagine
-
22-08-2019 - |
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!
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?