webentwicklung-frage-antwort-db.com.de

MYSQL CONCAT MAX LÄNGE

Folgender Beitrag: POST ÜBER CONCAT Mein Problem ist, dass ich viele Zeilen CONCAT in einer Zeile habe. Wenn ich zum Beispiel 10 Zeilen mit einer Zeichenfolge von etwa 50 Zeichen habe, zeigt mir meine Abfrage nur 6-7 dieser Zeilen oder ähnliches. Ich habe in Stack und Google gesucht und festgestellt, dass ich die maximale Länge von CONCAT mit folgendem Befehl ändern kann: SET group_concat_max_len := @@max_allowed_packet. Was mache ich falsch?

EDIT: Wenn ich SHOW VARIABLES LIKE 'group_concat_max_len' es zeigt mir 1024. MySQL Version 5.0.96-log. Tabellentyp: MyISAM. Sieht aus wie es keine Grenzen hat, ich versuche, einfache Varchar mit 2000 Zeichen zu wählen, und es sieht gut aus. Ich habe 3 Tabellen: 1. Item mit ItemID, 2. Descriptionpack mit ItemID und DescriptionID, 3. Description mit DescriptionID.

Select DISTINCT Item.ItemID as item ,GROUP_CONCAT(Description.DescriptionID) AS description From Item LEFT OUTER JOIN descriptionpack on Item.ItemID=descriptionpack.ItemID LEFT OUTER JOIN description on descriptionpack.descriptionID=description.descriptionID GROUP BY item

EDIT2: Ich glaube, ich habe das Problem gefunden. Ich habe meinem Provider mein Problem mitgeteilt und sie antworten mir folgendermaßen:

Ich habe Ihre Frage mit unserem Hosting-Team besprochen. Sie könnten die globalen Einstellungen für diese und andere Variablen nicht ändern. Sie sollten jedoch in der Lage sein, diese Variable pro Sitzung festzulegen, indem Sie sie zuerst vor anderen Abfragen festlegen. Hoffentlich hilft das.

Das Problem ist nun, wie man das macht.

10
Crackeraki

Vermutlich verwenden Sie GROUP_CONCAT(), nicht einfache CONCAT().

Der Standardwert für group_concat_max_len ist 1024. Dies ist eine ziemlich kleine Grenze, wenn Sie große, lange Verkettungen aufbauen.

Verwenden Sie diesen Befehl, um ihn zu ändern. Ich habe die Länge in diesem Beispiel auf 100.000 eingestellt. Sie können es auf alles einstellen, was Sie brauchen.

 SET SESSION group_concat_max_len = 100000;

Der übliche Wert für max_allowed_packet ist ein Megabyte, was wahrscheinlich mehr ist, als Sie benötigen.

group_concat_max_len selbst hat eine praktisch unbegrenzte Größe . Es ist nur durch die vorzeichenlose Wortlänge der Plattform begrenzt: 2 ^ 32-1 auf einer 32-Bit-Plattform und 2 ^ 64-1 auf einer 64-Bit-Plattform.

Wenn dies für Ihre Anwendung immer noch nicht ausreicht, ist es an der Zeit, @ eggyals Vorschlag zu berücksichtigen und Ihre Vorgehensweise zu überdenken.

25
O. Jones
You need change group_concat_max_len default value in the bellow config file   
**my.cnf file(Linux) and my.ini file(windows)**   

[mysqld]//Add this line group_concat_max_len=15000 under mysqld section

group_concat_max_len=15000

Note: After change is done You need to restart your MySQL server.   
my.cnf file path in linux :   
 1. /etc/my.cnf   
2./etc/mysql/my.cnf   
3.$MYSQL_HOME/my.cnf   
4.[datadir]/my.cnf   
5.~/.my.cnf  
0
Reena Mori