Programación

druplicon

Drupal 6: db_last_insert_id() no funciona correctamente [Solución]

Es curioso como un error de este tipo se les llega a escapar y entra en producción.

¿Por qué no funciona? porque a algun iluminado se le ocurrio que solo lanzando la query ‘SELECT LAST_INSERT_ID()’ sin especificar la tabla sobre la que se quiere obtener el ultimo registro insertado Drupal iba automagicamente a obtenerlo…. ERROR. Ah y por cierto incluso la query ’SELECT LAST_INSERT_ID()’ bien armada también suele fallar.


/**
 * Returns the last insert id.
 *
 * @param $table
 *   The name of the table you inserted into.
 * @param $field
 *   The name of the autoincrement field.
 */
function db_last_insert_id($table, $field){
    return db_result(db_query('SELECT LAST_INSERT_ID()'));
}

La función que soluciona este problema es esta:

/**
 * Version modificada del analogo de drupal que soluciona un problema comentado en foros.
 *
 * @param string $table tabla sobre la que se quiere obtener el ultimo id insertado
 * @param string $field cual es la columna que tiene el id
 * @return int
 */
function custom_db_last_insert_id($table, $field) {
    $result = db_query("SELECT $field FROM {$table} ORDER BY $field DESC LIMIT 1");
    $row = db_fetch_object($result);
    return $row->$field;
}

Solo resta agregar que uso esta solución hace mas de un año y funciona bien.

Herramientas

Comprimir y enviar archivos al vuelo con SCP / SSH

Sintaxis:

scp -C -c arcfour [archivo_local.ext] [ip destino]:[ruta remota]/[archivo_destino.ext]

Ejemplo:

scp -C -c arcfour archivo_local.ext 192.168.1.20:/home/archivo_destino.ext

Que frase! y que cierta!

“La mayoría de los programadores no programa porque espera el sueldo o la adulación del público, si no porque es divertido programar”
- Linus Torvalds

Convertir maquinas virtuales .raw a .qcow2

Me pasó que tenia una maquina virtual que hice con Proxmox en formato .raw pero necesitaba pasar esa maquina a un CentOS que corría libvirt. Para ello necesité convertir la imagen de la maquina virtual de formato raw a .qcow2.

qemu-img convert -f raw vm-disk.raw -O qcow2 vm-disk.qcow2
Herramientas

Tip: Resetear el usuario root de webmin

sudo /usr/share/webmin/changepass.pl /etc/webmin root CLAVE_NUEVA
Ir arriba