Problema macro sc_exec_sql

Caros amigos

Até pouco tempo atras eu conseguia executar scripts SQL usando a macro sc_exec_sql. Até onde eu saiba, essa macro nao retornava valores, e nao bloqueava a execucao do programa.
Entao, mesmo que houvesse um erro na execucao, ainda assim, a macro nao impediria a execucao do restante do codigo.
Entretanto, hoje me deparo com um outro comportamento.

Por exemplo, se eu executar os seguintes comandos :

sc_exec_sql(“alter table tabela1 add campox varchar(10)”);
sc_exec_sql(“alter table tabela2 add campoy varchar(10)”);

Aparece a mensagem
(pdo-mysql): alter table tabela1 add campox varchar(10)
1060: Duplicate column name ‘campox’

A segunda linha nunca é executada.

Estou preocupado, pq eu uso bastante essa macro, e muitas vezes costumo executar codigos de criacao de campos.
Alguem ja passou por isso e sabe como resolver?

o erro é de sql e não da macro

Mas tenho a impressao de que quando havia erro, a macro nao travava a execucao do proximo comando

mas não é um erro de PHP para parada da execução da app.
È um erro SQL.
Para parar vc tem ue capturar o erro SQL e vc pode fazer isso com sc_lookup ou sc_select em vez de sc_exec_sql

Oi Haroldo.
No caso especifico, ambos os comandos estao com a sintaxe correta. Ambos criam campos em tabelas.
Como a macro sc_exec_sql nao retorna nenhum resultado, entao, imagino que a execucao de um comando que retorne erro, nao deveria ser problema, se se houver erro, a linha seguinte deveria ser executada.
Por outro lado, nao tenho certeza de que o uso do sc_lookup ou sc_select ira mudar alguma coisa. Pq nao me interessa saber se deu erro. Nesse caso especifico, se deu erro na linha 1, entao prossigo para a linha 2. E assim por diante.

esse erro é de SQL:
pdo-mysql): alter table tabela1 add campox varchar(10)
1060: Duplicate column name ‘campox’

Sim, de fato. Mas apesar de ser erro de SQL, acho que ele nao travava a execucao do codigo PHP. Mas, enfim. Se sempre foi assim, entao tudo bem.

Não trava.

Olá
Acredito que é um comportamento anormal continuar a execução após um erro.
Experimente conseguir seu objetivo usando o controle de transação

Não é anormal o comportamento de continuar a sequência de comandos do PHP.

O controle deve ser do programador, se houve erro de SQL, o programador deve controlar e tratar esse erro.

Se a conexão ao banco de dados usa PDO, esse já é configurado pra transação automática.

Ola
Ainda acredito que é anormal continuar a execução após um erro.
E sim, o que quis dizer é que se trata a exceção o que é normal.
Porem ele deseja continuar a execução mesmo após o erro(anormal isso).

então @Moacir.Oliveira, você vê esse comportamento como um bug?

acione a NM então para solucionar essa questão.

Olá amigos.
Com relacao a questao de continuar a execucao, mesmo após um erro, há uma justificativa.
No caso, eu tenho um script que cria alguns campos em algumas tabelas. Se os campos ja existem, espero apenas que aquela consulta especifica nao seja executada, e assim, eu possa ir para a proxima. Exemplo :

alter table tabela1 add campo1 varchar(10); se der erro aqui, é pq o campo ja existe. Nada acontece.
alter table tabela1 add campo2 varchar(10); mas pode ser que esse outro campo nao exista.

Enfim. Valeu pela ajuda.