Pregunta

Actualmente estoy usando freetds para conectarse a un servidor MSSql donde estoy tirando en una gran cantidad de datos contables. Los datos se tirando en bien hasta que llega a un valor nulo. En ese momento no estoy recibiendo ningún error de PHP. En cambio, estoy recibiendo el siguiente error en el registro de errores de Apache.

  

[Aviso] niño pid 10235 de salida de fallo de señal de segmentación (11)

Lo hice algunas búsquedas para esto y encontré esta página , pero lo hace en realidad no ayudará. La consulta que estoy usando miradas algo como esto,

SELECT DISTINCT(t1.PEREND), t2.ERATE, t2.EEXTEND, t2.EARNDED, t1.ENTRYSEQ
       FROM UPCHKD as t1 LEFT JOIN
            (SELECT EARNDED, PEREND, ERATE, EEXTEND, ENTRYSEQ FROM UPCHKD
                    WHERE (EARNDED LIKE '401K%'AND EARNDED NOT LIKE '401KL%') AND
                          EMPLOYEE = ? AND PEREND >= ? AND PEREND <= ?) as t2 ON t1.PEREND = t2.PEREND
       WHERE t1.PEREND >= ? AND t1.PEREND <= ? AND t1.EMPLOYEE = ? ORDER BY PEREND

Y yo estoy recibiendo los datos usando un bucle while como la siguiente:

while($result = $sth->fetch(PDO::FETCH_ASSOC)) {
    //Deal with data here
}

No se puede decir si esto es un problema con DOP, mi capa de base de datos, MSSQL, o de mi consulta. Además, me gustaría señalar que si tomo la consulta y ejecutarlo de forma manual mediante el estudio de MSSQL, funciona muy bien, y se muestran los valores nulos correctamente.

¿Fue útil?

Solución 2

Una solución a este problema funciona mediante la adición de si las declaraciones nulos a todas las columnas de retorno como tal,

ISNULL(t2.ERATE, 0) as ERATE, ISNULL(t2.EEXTEND, 0) as EEXTEND, ISNULL(t2.EARNDED, '') as EARNDED

Si se encuentran ahora nulos, que se devuelven como ceros sin error. No es el más bonito, pero funciona.

Otros consejos

fallos

segmentación no son divertidos de manejar. La mejor respuesta que puedo dar es que continuamente realizar llamadas die('okay'); en varios lugares para ver hasta qué punto en los diferentes bloques de codificación que se obtiene antes de llegar a una falla seg. (Usted no verá nada si hubo una falla seg).

También vale la pena simplemente tratando de actualización todo para las versiones más recientes:. PHP, PDO, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top