Pergunta

Atualmente, estou usando o Freetds para me conectar a um servidor MSSQL, onde estou atraindo muitos dados contábeis. Os dados estão obtendo multa até atingir um valor nulo. Nesse ponto, não estou recebendo erros de PHP. Em vez disso, estou recebendo o seguinte erro no log de erros do Apache.

AVISO] Falha de segmentação de sinal de saída PID 10235 (11)

Eu fiz algumas pesquisas por isso e encontrei esta página, mas isso realmente não ajuda. A consulta que estou usando parece algo assim,

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

E estou recebendo os dados usando um pouco de loop como o seguinte,

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

Não sei dizer se isso é um problema com o PDO, minha camada de banco de dados, msSQL ou minha consulta. Além disso, gostaria de ressaltar que, se eu pegar a consulta e executá -la manualmente usando o MSSQL Studio, ele funciona bem e mostrar os valores nulos corretamente.

Foi útil?

Solução 2

Uma solução para esse problema funciona adicionando declarações nulas a todas as colunas de retorno como assim,

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

Se os nulos forem encontrados agora, eles serão devolvidos como zeros sem erro. Não é o mais bonito, mas funciona.

Outras dicas

Falhas de segmentação não são divertidas de lidar. A melhor resposta que posso dar é para colocar continuamente die('okay'); liga em vários lugares para ver até que ponto em diferentes blocos de codificação você recebe antes de atingir uma falha do SEG. (Você não verá nada se houve uma falha no SEG).

Também vale a pena tentar atualizar tudo para as mais recentes versões: PHP, PDO, etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top