Varias transacciones con PHP y MySQL

Estoy implementando un programa con PHP y MySQL y tengo un problema:
1) Creo 2 conexiones a 2 bases de datos diferentes y abro una transacción para cada una de ellas, digamos CON1-TRANS1 y CON2-TRANS2.
2) El link de la conexión lo paso a una función que me realiza un INSERT sobre la CON2 y -> OK, el paso siguiente es un INSERT con la CON1 y -> ERROR.
No sé porqué me da este error. Si ejecuto la Consulta 2 con CON1 y TRANS1 me funciona correctamente.
¿Sabes a que puede ser debido?

3 Respuestas

Respuesta
1
En primera instancia no debería por que fallarte que ya que la función esta bien hecha ya que funciona bien con CON2, entonces el problema deberá estar en los parámetros de retorno de la segunda conexión.
Podrías postear el código de conexión y de consulta haber que encontramos.
Respuesta
1
Veamos el ejemplo con un mismo servidor y dos bases de datos, para simplificar.
$con1 = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if ( ! $con1 )
  die ('No me puedo conectar al servidor');
//primera bd
mysql_select_db('bd1' , $con1);
$con2 = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if ( ! $con1 )
  die ('No me puedo conectar al servidor');
 //segunda bd
mysql_select_db('bd1' , $con2);
//insertando en la conexion uno
$result = mysql_query("insert into tabla_bd1 value(1,2,3)" , $con1);
//insertando en la conexion dos
$result = mysql_query("insert into tabla_bd2 value(4,5,6)" , $con2);
Debes tener en cuenta diferenciar el recurso de conexión si es $con1 o $con2 a la hora de hacer cualquier consulta o modificación en la base de datos
Todas las funciones mysql_xxx tienen como segundo parámetro el enlace de conexión, de manera que no hay forma de caer en ambigüedades.
Igualmente en con2 puedes haberte conectado a otro servidor, no tiene que ser el mismo que con1
Buenas apolinux,
La segunda conexión es al mismo servidor pero una base de datos diferente.
Si quieres depurar el error debes mostrarme el código exacto que te lo genera.
Respuesta
1
Sería interesante saber cual es 'este' error, concretamente.
Y las líneas donde realizas ambas ejecuciones.
El error no lo tengo porque tengo una función sql_trans que me ejecuta la consulta y me devuelve un boleano (en este caso false) y las llamadas las realizo desde un cliente Delphi hacia unos web services implementados con PHP y SOAP. No sé dónde me deja los logs el mysql, lo tengo en un servidor Linux CENTOS.
Pues deberías modificar tu función para que te devuelva el error, porque sino no sabrás lo que ocurre.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas