Autor Tópico: MySQL limita uso após atualização para Ubuntu 16.04  (Lida 2548 vezes)

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.712
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #15 Online: 04 de Janeiro de 2017, 09:58 »
Quando o campo não é preenchido, o form pode fornecer valores padrão. Aliás, a própria base pode fornecer valores padrão. P.ex., com campos de data, vc pode configurar a base para preenchê-los com a hora automaticamente.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #16 Online: 06 de Janeiro de 2017, 16:20 »
Não funciona a contento.
Então, resumindo:

Num campo tipo checkbox:
<input type="checkbox" name="quitacao" id="quitacao"
 value="<?php echo $quitacao; ?>" <?php if ($quitacao=='1') { echo ' checked '; } ?> />

No PHP:
$query = "INSERT INTO mytable (quitacao, dataquit) VALUES ('$quitacao','$dataquit')";

No DB
Name: quitacao
Type: tinyint(4)
NULL: Yes
Default: 0

Resposta no navegador:
Incorrect integer value: '' for column 'quitacao' at row 1

Onde a falha?

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.712
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #17 Online: 06 de Janeiro de 2017, 16:57 »
Texto vazio não é um número válido.
Em tempo... se vc tem um campo numérico, o correto seria você lê-lo em uma entrada de texto, não num checkbox.
Checkboxes são pra você ler campos booleanos, verdadeiro ou falso, ligado ou desligado, aceso ou apagado, selecionado ou não selecionado, zero ou um...
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #18 Online: 06 de Janeiro de 2017, 17:04 »
Mas é isso, ou, é para ser isso.
Pago ou não pago, marca zero ou um.
E entendo que tinyint é um número inteiro pequeno, de 0 a 255 se não me engano.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.712
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #19 Online: 06 de Janeiro de 2017, 17:30 »
Então esse campo deveria ser booleano, não um tinyint.
De qualquer forma, garanta que esse valor receba um valor numérico, não um "vazio".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #20 Online: 06 de Janeiro de 2017, 17:52 »
Boa dica. Fiz por dentro do phpmyadmin, que executa no MySQL o comando:

Código: [Selecionar]
ALTER TABLE 'mytable' CHANGE 'quitacao' 'quitacao' BOOLEAN NULL DEFAULT FALSE;
Feito isso, é apresentado como tinyint(1).
Nota: Quando seleciona a opção tinyint, ele coloca automaticamente tinyint(4).

Como continua tratando o campo como um número inteiro, repete-se a mensagem de erro.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.712
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #21 Online: 06 de Janeiro de 2017, 18:08 »
fecha a sessão do phpMyAdmin e carrega de novo, pra limpar a visualização.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #22 Online: 09 de Janeiro de 2017, 09:26 »
Mesmo erro...

Acho que as perguntas no momento são:

1) Quando um campo está marcado como NULL no db, significa que ele o valor a ele atribuído pode ser nulo?
2) O tipo de dado (VAR, INT, etc) interfere na questão de ser nulo?
3) O valor default selecionado como 0 (zero), não deveria ser atribuído na inserção, excluindo a condição de nulo?

Um teste:
Marquei o campo 'datavenc' no db como NULL e tentei fazer a inclusão. Mesagem de erro:
Código: [Selecionar]
Incorrect date value: '' for column 'datavenc' at row 1É como se o NULL não mudasse nada.
« Última modificação: 09 de Janeiro de 2017, 09:54 por maurov »

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.712
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #23 Online: 09 de Janeiro de 2017, 10:19 »
Você ainda não pegou o tchan do problema...
Acontece que '' (string vazia) não é NULL!!!

NULL é um campo que não foi preenchido.

String vazia é uma string de comprimento zero.

São valores diferentes...
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #24 Online: 09 de Janeiro de 2017, 11:48 »
Hmmm, como permitir salvar o seguinte form enquanto apenas a 'datavenc' é  preenchida?

<input type="date" name="datavenc" value="<?php echo $datavenc; ?>" >
<input type="checkbox" name="quitacao" id="quitacao"
 value="<?php echo $quitacao; ?>" <?php if ($quitacao=='1') { echo ' checked '; } ?> />
<input type="date" name="dataquit" value="<?php echo $dataquit; ?>" >

$query = "INSERT INTO mytable (datavenc, quitacao, dataquit) VALUES ('$datavenc','$quitacao','$dataquit')";

Name: datavenc
Type: date
NULL: Yes

Name: quitacao
Type: tinyint(1)
NULL: Yes
Default: 0

Name: dataquit
Type: date
NULL: Yes

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.712
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #25 Online: 09 de Janeiro de 2017, 12:28 »
Quando vc quer que um registro seja inserido mantendo alguns campos como NULL, omita esses campos da instrução de inserção. Ou seja, em vez de

INSERT INTO mytable (datavenc, quitacao, dataquit) VALUES ('$datavenc','$quitacao','$dataquit')

faça:

INSERT INTO mytable (datavenc) VALUES ('$datavenc')
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #26 Online: 09 de Janeiro de 2017, 17:49 »
Acredito que funcione, Evita-se passar pelo NULL. Se não conseguir resolver, vou ver se tem como mudar o script.

Mas imagina um prontuário médico onde tem que salvar o nome do paciente e uma checkbox indicando se ele é cardíaco. Não seria possível salvar um registro do não-cardíaco, né?

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 18.712
  • Gratidão gera gratidão, lamúria gera lamúria...
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #27 Online: 09 de Janeiro de 2017, 17:57 »
Você passa o valor "FALSE" para "cardíaco", não "" (vazio).
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #28 Online: 09 de Janeiro de 2017, 18:10 »
Como, onde? Vou tentar

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Re:MySQL limita uso após atualização para Ubuntu 16.04
« Resposta #29 Online: 10 de Janeiro de 2017, 11:12 »
Tentei, mas não consegui entender.
Se eu usar FALSE como nestes exemplos da web, não tenho como atualizar a variável :
INSERT INTO first VALUES (NULL, 'G22', TRUE);
INSERT INTO first VALUES (NULL, 'G23', FALSE);