Estoy usando datamapper con ruby para almacenar datos en ciertas tablas.¿Cómo trunco las tablas correctamente?
Varias de las tablas tienen una gran cantidad de información y quiero borrarlas cuando el usuario 'reconstruye la base de datos' (básicamente borra todo y vuelve a calcular los datos).
Originalmente probé Forum.all.destroy y lo hice para todas las tablas diferentes, pero noté que algunas de ellas simplemente no se borraron de dentro de phpmyadmin. solo puedo imaginarlo debido a las claves externas. Aunque realmente no lo sé porque mi otra mesa, cuyas claves externas se eliminaron con éxito. Sin mencionar, id más bien simplemente 'cero' de todas formas para que las teclas no lleguen a números extraordinariamente grandes (como la clave # 500,000).
Luego intenté ejecutarlo con el siguiente código, pero no borra las tablas debido a "restricciones de clave externa". Quiero forzarlo a que funcione porque sé con certeza que estoy limpiando todas las tablas que dependen unas de otras (no solo estoy eliminando 2 tablas, una tabla de configuraciones y una tabla de almacenamiento aleatorio, ninguna de las cuales usa llaves extranjeras).
Hasta ahora he ...
adapter = DataMapper.repository(:default).adapter
adapter.execute('TRUNCATE TABLE `forums`, `dates`, `remarks`');
que estaría bien, excepto la sintaxis de MySQL está mal aparentemente. así que eso es lo primero que
lo hice 1 por 1 en phpmyadmin y cuando lo hice de esa manera se dice
Cannot truncate a table referenced in a foreign key constraint
alguna idea de cómo hacer esto en ruby? Intenté ejecutar cada comando por separado dentro de la aplicación y no eliminó nada. Luego intenté ejecutarlos uno por uno en phpmyadmin en orden y todavía dice # 1701 - No se puede truncar una tabla a la que se hace referencia en una restricción de clave externa – Tallboy
¡rayar eso! funcionó ... solo estuvo ahí por un milisegundo antes de que volviera a agregar mis datos y no lo capté realmente truncado. ¡Gracias! – Tallboy
Trunqué las tablas secundarias, pero incluso eso falla al eliminar la tabla padre. De todos modos, utilicé el truco de deshabilitar los controles de claves extranjeras por ahora. – inquisitive