Migração de MariaDB para MySql - Problema com Data

Boa tarde a todos,

Não sei se alguém já passou por isso.

Tenho um form onde no onLoad faço um sc_lookup(“select * from tbl_agenda where data >= '”.{data_atual}."’");

no MariaDB não tinha problema passando a data como ‘’ (2 aspas simples)
select * from tbl_agenda where data >= ‘’ ;

estou migrando para o Mysql e ele não permite passar data como ‘’, apresenta erro.

alguém já passou por isso? como resolveu? tem algum parâmetro/variável que preciso setar para aceitar.

Agradeço.

Tem que funcionar do mesmo jeito.

Veja se esta usando Conexão MySQL PDO, e em avançado client_encoding, coloque
o que usa na sua base.

Experimente colocar a SQL em uma variável antes de passar na macro, exemplo:

/* Macro sc_lookup */

$sql ="
SELECT
    CodigoClienteID,
    NomeCliente,
    CPF
FROM
    clientes
WHERE
    CPF = '{CPF}'
";

sc_lookup(chk_cli, $sql);

/* Erro no lookup */
if (FALSE === {chk_cli}) {
	sc_error_message("Ocorreu um erro no acesso ao<br/>banco de dados: $sql.<br/>");
}
elseif (empty({chk_cli})) { /* EOF */

	sc_error_message("Nenhum valor foi retornado pelo banco.<br/>");
}
else {

	/* Inclua aqui sua rotina de processamento */

    $_CodigoClienteID = {chk_cli[0][0]};
    $_NomeCliente = {chk_cli[0][1]};
    $_CPF = {chk_cli[0][2]};

}
1 Curtida

Jailton, boa tarde.

Agradeço seu retorno, mas o problema esta somente quando o campo for data conforme passei na descrição.
no SQLyog apresenta o erro, como disse no banco de dados MySQL, no MariaDB não apresenta erro.

Error Code: 1525
Incorrect DATE value: ‘’

@Ilton, tenta assim : select * from tbl_agenda where data is not null

Compare a diretiva sql_mode nos dois SGDBS

Luiz, o problema é que estou passando o próprio campo do scriptcase conforme o select que passei acima, tem como eu contornar isso validando antes, mas como tenho varias aplicações, teria que mexer em todas, por isso estava vendo se tem algum parâmetros para ignorar isso.
agradeço mesmo assim a ajuda.

Alexandre, tentamos os parâmetros que ignora isso mas também não funcionou, olhando a documentação realmente o MySQL não aceita mais data em branco.
agradeço sua ajuda.

No MySQL tente passar a data ‘0000-00-00’ ao invés da data em branco.

Kleyber, sim se eu tratar antes eu consigo, o problema como disse, hoje uso MariaDB e permite que eu posso passar campo data com aspas simples, conforme passei no select no inicio, o problema é que terei que ajustar em todas as aplicações os sc_lookup(), pois o MySQL não aceita campo data com aspas simples dá erro.
Agradeço sua ajuda.

Cada vez mais eu acredito que MariaDB e MySQL estão tomando caminhos diferentes.

1 Curtida

De fato nas versões mais novas do MYSQL, se, por exemplo, fizer um SELECT onde o campo data está em branco, não funciona, mesmo alterando sql_mode.
Exemplo : select * from TABELA where campodata=’’;

Acontece que o SCRIPTCASE deveria tratar a situação pelo seguinte motivo que exemplifico:

  • se você tem um formulário e você coloca na ordenação um campo do tipo “data”, o próprio SCRIPTCASE após a inserção de um novo registro faz um SELECT do tipo que mostrei acima (…campodata=""), a fim de achar a última chave inserida, E AÍ A APLICAÇÃO NÃO FUNCIONA.

Ou seja, IMPOSSÍVEL usar versões mais novas do MYSQL com o SCRIPTCASE.

Tenho várias aplicações que isso aconteceu e a solução foi fazer DOWNGGRADE do banco, o que acho ABSURDO.

1 Curtida