¿Depende del número de conjuntos de valores? ¿Depende del número de bytes en la instrucción INSERT?
fuente
¿Depende del número de conjuntos de valores? ¿Depende del número de bytes en la instrucción INSERT?
Puede insertar una cantidad infinita de registros utilizando INSERT ... SELECT
patrón, siempre que tenga esos registros, o parte de, en otras tablas.
Pero si está codificando los valores usando un INSERT ... VALUES
patrón, entonces hay un límite en el tamaño / largo de su declaración: max_allowed_packet que limita la longitud de las declaraciones SQL enviadas por el cliente al servidor de la base de datos y afecta cualquier tipo de consulta y no solo para la instrucción INSERT.
Idealmente, Mysql permite la creación de un número infinito de filas en una sola inserción (a la vez) pero cuando un
El cliente MySQL o el servidor mysqld recibe un paquete mayor que max_allowed_packet bytes, emite un error de paquete demasiado grande y cierra la conexión.
Para ver cuál es el valor predeterminado para la variable max_allowed_packet, ejecute el siguiente comando en MySQL:
show variables like 'max_allowed_packet';
La instalación estándar de MySQL tiene un valor predeterminado de 1048576 bytes (1 MB). Esto se puede aumentar configurándolo en un valor más alto para una sesión o conexión.
Esto establece el valor en 500 MB para todos (eso es lo que significa GLOBAL):
SET GLOBAL max_allowed_packet=524288000;
verifique su cambio en nuevo terminal con nueva conexión:
show variables like 'max_allowed_packet';
Ahora debería funcionar sin ningún error para insertar registros infinitos. Gracias
strlen($query_with_questionmarks) < $max_alloweed_packet
?La consulta está limitada por
max_allowed_packet
en general.fuente
se refiere a http://forums.mysql.com/read.php?20,161869 , que está relacionado con la configuración de su mysql:
max_allowed_packet
,bulk_insert_buffer_size
,key_buffer_size
.fuente
Puede insertar un número infinito de filas con una instrucción INSERT. Por ejemplo, podría ejecutar un procedimiento almacenado que tiene un bucle ejecutado mil veces, cada vez que ejecuta una consulta INSERT.
O su INSERT podría disparar un disparador que a su vez realiza un INSERT. Que dispara otro gatillo. Y así.
No, no depende del número de conjuntos de valores. Tampoco depende del número de bytes.
Existe un límite en cuanto a la profundidad de los paréntesis que pueden estar anidados y un límite a la extensión de la declaración total. Irónicamente, se hace referencia a ambos en thedailywtf.com. Sin embargo, los dos medios que mencioné anteriormente superan estos límites.
fuente
Llegará al límite de max_allowed_packet y
error: 1390 La instrucción preparada contiene demasiados marcadores de posición.
Puede colocar 65535 marcadores de posición en un sql, por lo que si tiene dos columnas en una fila, puede insertar 32767 filas en un sql.
La importación de 50K + registros en MySQL da error general: 1390 La declaración preparada contiene demasiados marcadores de posición
fuente
Creo que no hay un número definido de filas que esté limitado a insertar por INSERT, pero puede haber algún tipo de tamaño máximo para las consultas en general.
fuente
Está limitado por max_allowed_packet.
Puede especificar utilizando:
mysqld --max_allowed_packet=32M
Por defecto es 16M.También puede especificar en my.cnf en / etc / mysql /
fuente