MySQL: quante righe posso inserire in una singola istruzione INSERT?

Dipende dal numero di set di valori? Dipende dal numero di byte nell’istruzione INSERT?

È ansible inserire un numero infinito di record utilizzando il modello INSERT ... SELECT , purché si disponga di tali record o parte di essi in altre tabelle.

Ma se si stanno codificando i valori con il modello INSERT ... VALUES , allora c’è un limite su quanto è grande / lungo la propria affermazione: max_allowed_packet che limita la lunghezza delle istruzioni SQL inviate dal client al server di database, e influisce su qualsiasi tipo di query e non solo per l’istruzione INSERT.

Idealmente, Mysql consente un numero infinito di creazione di righe in un singolo inserimento (contemporaneamente) ma quando a

Il client MySQL o il server mysqld riceve un pacchetto più grande di max_allowed_packet byte, emette un errore troppo grande per Packet e chiude la connessione.

Per visualizzare quale valore predefinito è per la variabile max_allowed_packet, eseguire il comando seguente in MySQL:

show variables like 'max_allowed_packet';

L’installazione standard di MySQL ha un valore predefinito di 1048576 byte (1 MB). Questo può essere aumentato impostandolo su un valore più alto per una sessione o una connessione.

Questo imposta il valore a 500 MB per tutti (ecco cosa significa GLOBAL):

SET GLOBAL max_allowed_packet=524288000;

controlla la modifica nel nuovo terminale con una nuova connessione:

show variables like 'max_allowed_packet';

Ora dovrebbe funzionare senza errori per inserire record infiniti. Grazie

La query è limitata da max_allowed_packet in generale.

fai riferimento a http://forums.mysql.com/read.php?20,161869 , relativo alla configurazione di mysql: max_allowed_packet , bulk_insert_buffer_size , key_buffer_size .

È ansible inserire un numero infinito di righe con una sola istruzione INSERT. Ad esempio, è ansible eseguire una stored procedure che ha un ciclo eseguito migliaia di volte, eseguendo ogni volta una query INSERT.

O il tuo INSERT potrebbe far scattare un trigger che esegue un INSERT. Che fa scattare un altro trigger. E così via.

No, non dipende dal numero di set di valori. Né dipende dal numero di byte.

C’è un limite al grado di nidificazione delle tue parentesi e un limite alla durata della tua affermazione totale. Entrambi sono referenziati, ironia della sorte, su thedailywtf.com. Tuttavia, entrambi i mezzi di cui ho parlato aggirano questi limiti.

Colpisci il limite max_allowed_packet e

errore: 1390 L’istruzione preparata contiene troppi segnaposto.

Puoi mettere 65535 segnaposto in un file sql. Quindi se hai due colonne in una riga, puoi inserire 32767 righe in un solo sql.

L’importazione di record 50K + in MySQL fornisce errore generale: 1390 L’istruzione preparata contiene troppi segnaposto

È limitato da max_allowed_packet.
Puoi specificare usando: mysqld --max_allowed_packet=32M È di default 16M.
Puoi anche specificare in my.cnf in / etc / mysql /

Credo che non ci sia un numero definito di righe che sei limitato a inserire per INSERT, ma potrebbe esserci un qualche tipo di dimensione massima per le query in generale.