MySql erro no DATE DEFAULT 'NOW', [RESOLVIDO]

1. MySql erro no DATE DEFAULT 'NOW', [RESOLVIDO]

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 22/11/2016 - 10:12h

Bom dia,

Estou tendo problemas, creio que seja coisa básica, erro de principiante.

Estou tentando acrescentar no DBeaver no MySql esta tabela:

CREATE DATABASE aeroporto;

use aeroporto;

-- ************ TBL_VOO ******************

CREATE TABLE tbl_voo (
voo_numero INTEGER NOT NULL,
voo_cia VARCHAR (30),
voo_horario TIME,
avi_numero INTEGER,
aer_codigo INTEGER,
voo_dtcad DATE DEFAULT 'NOW',
voo_dtalt DATE,
usu_codigo INTEGER);


Mas aponta erro em : voo_dtcad DATE DEFAULT 'NOW', erros apontados:

SQL Error [1067] [42000]: Invalid default value for 'voo_dtcad'
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Invalid default value for 'voo_dtcad'


Agradeço desde já




  


2. MELHOR RESPOSTA

thinomar
thinomar

(usa Linux Mint)

Enviado em 22/11/2016 - 10:40h

Puts, dei uma olhada na documentação e não vai rolar...
http://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html

The DEFAULT value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE. The exception is that you can specify CURRENT_TIMESTAMP as the default for TIMESTAMP and DATETIME columns.


Ou seja, só rola deixar DEFAULT, nesse caso, se você mudar o campo para DATETIME, o que ficaria assim:
voo_dtcad DATETIME DEFAULT CURRENT_TIMESTAMP, 

Mas há sempre a opção de colocar a data nas queries, ao invés de usar DEFAULT, caso não possa usar outro tipo que não seja DATE...


3. Re: MySql erro no DATE DEFAULT 'NOW',

thinomar
thinomar

(usa Linux Mint)

Enviado em 22/11/2016 - 10:26h

Tenta assim:
voo_dtcad DATE DEFAULT NOW(), 



4. Re: MySql erro no DATE DEFAULT 'NOW',

thinomar
thinomar

(usa Linux Mint)

Enviado em 22/11/2016 - 10:29h

Melhor, tenta assim. Tenho receio desse NOW() deixar o momento de criação da tabela como default em todos os registros.
voo_dtcad DATE DEFAULT CURRENT_DATE, 



5. Re: MySql erro no DATE DEFAULT 'NOW', [RESOLVIDO]

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 22/11/2016 - 10:30h

Olá tentei
<code>
-- ************ TBL_VOO ******************

CREATE TABLE tbl_voo (
voo_numero INTEGER NOT NULL,
voo_cia VARCHAR (30),
voo_horario TIME,
avi_numero INTEGER,
aer_codigo INTEGER,
voo_dtcad DATE DEFAULT NOW(),
voo_dtalt DATE,
usu_codigo INTEGER);
</code>


Mas aponta ainda erro:
<code>
SQL Error [1067] [42000]: Invalid default value for 'voo_dtcad'
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Invalid default value for 'voo_dtcad'
</code>



6. Re: MySql erro no DATE DEFAULT 'NOW', [RESOLVIDO]

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 22/11/2016 - 10:32h

thinomar escreveu:

Melhor, tenta assim. Tenho receio desse NOW() deixar o momento de criação da tabela como default em todos os registros.
voo_dtcad DATE DEFAULT CURRENT_DATE, 



Olá tentei

CREATE TABLE tbl_voo (
voo_numero INTEGER NOT NULL,
voo_cia VARCHAR (30),
voo_horario TIME,
avi_numero INTEGER,
aer_codigo INTEGER,
voo_dtcad DATE DEFAULT CURRENT_DATE,
voo_dtalt DATE,
usu_codigo INTEGER);





Erros:


SQL 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 'CURRENT_DATE,
voo_dtalt DATE,
usu_codigo INTEGER)' at line 7
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 'CURRENT_DATE,
voo_dtalt DATE,
usu_codigo INTEGER)' at line 7







7. Re: MySql erro no DATE DEFAULT 'NOW', [RESOLVIDO]

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 22/11/2016 - 11:02h

thinomar escreveu:

Puts, dei uma olhada na documentação e não vai rolar...
http://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html

The DEFAULT value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE. The exception is that you can specify CURRENT_TIMESTAMP as the default for TIMESTAMP and DATETIME columns.


Ou seja, só rola deixar DEFAULT, nesse caso, se você mudar o campo para DATETIME, o que ficaria assim:
voo_dtcad DATETIME DEFAULT CURRENT_TIMESTAMP, 

Mas há sempre a opção de colocar a data nas queries, ao invés de usar DEFAULT, caso não possa usar outro tipo que não seja DATE...


è isso man, valeu!

<code>
CREATE TABLE tbl_voo (
voo_numero INTEGER NOT NULL,
voo_cia VARCHAR (30),
voo_horario TIME,
avi_numero INTEGER,
aer_codigo INTEGER,
voo_dtcad DATETIME DEFAULT CURRENT_TIMESTAMP,
voo_dtalt DATE,
usu_codigo INTEGER);
</code>




8. Re: MySql erro no DATE DEFAULT 'NOW', [RESOLVIDO]

thinomar
thinomar

(usa Linux Mint)

Enviado em 22/11/2016 - 11:12h

Epa, que bom que deu certo. Só se atente as diferenças do DATE pro DATETIME, pra não ter confusão:
http://dev.mysql.com/doc/refman/5.7/en/datetime.html






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts