Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no Ex. 8 da Aula 3 - Alterando e restringindo o formato das nossas tabelas

No exercício:

Reescrevendo o CREATE TABLE
Reescreva o CREATE TABLE do começo do curso, marcando OBSERVACOES como nulo, 
valor padrão do RECEBIDO como 1, e FORMA_PAGTO como ENUM que aceita DINHEIRO, CARTAO, BOLETO.

O Gabarito indica o seguinte:

CREATE TABLE compras (
          id int NOT NULL AUTO_INCREMENT,
          valor double,
          data datetime,
          observacoes text,
          recebido tinyint(1) DEFAULT 1,
          forma_pagto ENUM('DINHEIRO', 'CARTAO', 'BOLETO')
          PRIMARY KEY (id)
        )

Escrevi(CTRL+C / CTRL+V) no terminal:

CREATE TABLE teste (id int NOT NULL AUTO_INCREMENT, valor double, data datetime, observacoes text, recebido tinyint(1) DEFAULT 1, forma_pagto ENUM('DINHEIRO', 'CARTAO', 'BOLETO') PRIMARY KEY(id));

Obtive o seguinte erro:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(id))' at line 1

Depois de algumas tentativas, acredito que esteja faltando uma vírgula antes de declarar a PRIMARY KEY.

Mas ficou uma dúvida quanto ao exercício, antes de ver o gabarito tentei fazer da seguinte forma e obtive o seguinte erro porém não consigo enxergar aonde está o erro:

mysql> CREATE TABLE teste(id int NOT NULL auto_increment primary key, valor double, data datetime, observacoes varchar(255), recebido tinyint(1) default '1', forma_pagto enum('DINHEIRO', 'CARTAO', 'BOLETO');

Erro: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

3 respostas

Na linha que estou obtendo erro, faltava fechar um parentese.

--'

E no gabarito, acredito que esteja faltando apenas a virgula mesmo.

Quando definimos como TEXT, igual ao gabarito, temos um varchar? de qual tamanho ?

solução!

Henrique, Bom dia !

sim o erro no gabarito é que faltou a virgula depois do do da declaração do Enum .

no seu erro , você fechou o parenteses e funcionou o código ?

ja a sua outra pergunta , o tipo TEXT vamos dizer que é um varchar com tamanho bem maior , enquanto o varchar podemos utilizar no máximo 255 caracteres o valor máximo do tipo TEXT é de 65535 caracteres .

Espero ter ajudado , Bons Estudos

Celso, obrigado! Sim, no meu erro fechei o parenteses e funcionou =)

Obrigado pela informação sobre o tipo TEXT.