¿Cómo usar la sentencia "TRUNCATE TABLE" de MySQL?

26 abr 2012, 11:18:20
Vistas: 20.6K
Votos: 5

He intentado usar dbDelta y $wpdb->query, pero no funcionan. ¿Alguien tiene alguna idea?

1
Comentarios

¿Cuál es el error? Puedes mostrarlo con la siguiente llamada justo después de ejecutar la sentencia: $e = $wpdb->query($sql); die(var_dump($e));

Thomas Thomas
26 abr 2012 11:47:24
Todas las respuestas a la pregunta 3
0
12

Como probé hoy, truncar es MUCHO MEJOR que eliminar, porque DELETE rompe el sitio, y truncar simplemente vacía la tabla, aquí está el código funcional:

global $wpdb;

$wpdb->query('TRUNCATE TABLE wp_posts');
20 dic 2013 23:23:52
5

Según esta entrada del foro, el truncate no funciona. Supongo que, al ser una consulta tan destructiva, está filtrada por la clase. También está esta publicación en Trac, que si la estoy leyendo correctamente, no permite sentencias DDL.

26 abr 2012 16:33:01
Comentarios

Bueno, tal vez use DELETE en lugar de truncar.

goodseller goodseller
26 abr 2012 17:51:54

@goodseller No estoy seguro de lo que intentas hacer, así que quizás no sea importante para ti, pero ten en cuenta que DELETE no reinicia las columnas de autoincremento. Así que aunque tu tabla estará vacía, el próximo ID de elemento continuará desde donde quedó el último valor autoincrementado.

MathSmath MathSmath
26 abr 2012 22:53:18

@MathSmath Sí~ Eso es cierto, muy cierto. Pero, ¿hay alguna forma de hacerlo?

goodseller goodseller
27 abr 2012 07:02:01

Lo encontré: $wpdb->query("ALTER TABLE tableName AUTO_INCREMENT=0") Gracias @MathSmath :)

goodseller goodseller
27 abr 2012 08:37:57
  1. el código del foro vinculado no funcionó debido a un error tipográfico. 2. el ticket de trac solo habla sobre los valores de retorno de las declaraciones ddl.
skndstry skndstry
13 sept 2016 12:03:29
0

Sé que hay respuestas similares arriba, pero en las respuestas anteriores, la tabla wp_post se usa por error. Si alguien usa ese código por equivocación, perderá todas sus publicaciones.

Así que comparto la forma correcta de truncar.

   global $wpdb;
   $table_name = $wpdb->base_prefix.'nombre_de_la_tabla_sin_prefijo';
   $wpdb->query("TRUNCATE TABLE $table_name");
19 oct 2021 15:47:20