Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Pequeño problema con script

Estas en el tema de Pequeño problema con script en el foro de Bases de Datos General en Foros del Web. Cuando ejecuto el siguiente script, me falla en el momento de crear la tabla video, supongo que esta relacionado con el tema de la clave ...
  #1 (permalink)  
Antiguo 10/09/2008, 09:24
Avatar de naitmeir  
Fecha de Ingreso: junio-2008
Ubicación: Barcelona
Mensajes: 227
Antigüedad: 15 años, 10 meses
Puntos: 0
Pequeño problema con script

Cuando ejecuto el siguiente script, me falla en el momento de crear la tabla video, supongo que esta relacionado con el tema de la clave foranea, pero no estoy demasiado puesto en el tema, como puedo solucionarlo?

Código PHP:
create database naitmeir;
use 
naitmeir;

create table user  (

  
username varchar(16),
  
passwd char(16not null,
  
email varchar(100not null,

  
constraint PK_username primary key (username)
);


create table new(

  
id integer not null,
  
username varchar(16not null,
  
tipo varchar(15),
  
genero varchar(16),
  
fecha text(15),
  
titulo varchar(50),

  
constraint PK_id primary key (id),
  
constraint FK_user foreign key (usernamereferences user (username)

);

create table articulo(

 
id integer not null,
 
noticia longtext,

 
constraint FK_new foreign key (idreferences new (id

);

create table video(

 
id integer not null,
 
noticia longtext,

 
constraint FK_new foreign key (idreferences new (id

);

create table encuesta(

  
idencuesta integer not null,
  
username varchar(16),
  
pregunta varchar(50not null
  
respuesta1 varchar(50not null,
  
respuesta2 varchar(50not null,
  
respuesta3 varchar(50not null,
  
respuesta4 varchar(50not null,


  
constraint PK_idencuesta primary key (idencuesta),
  
constraint FK_user foreign key (usernamereferences user (username)

); 
  #2 (permalink)  
Antiguo 10/09/2008, 09:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Pequeño problema con script

la cosa parece ser simple:
Estás usando como nombre de una tabla una palabra reservada, lo que es una restricción de todo lenguaje, sin importar de cuál estemos hablando.
NEW es una palabra reservada, por lo que si insistes en usarla, deberás encerrarla entre acentos agudos (`)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/09/2008, 09:55
Avatar de naitmeir  
Fecha de Ingreso: junio-2008
Ubicación: Barcelona
Mensajes: 227
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Pequeño problema con script

No me habia dado cuenta de que la marcaba como la palabra reservada, sorry, pero aun asi perdon por mi insistencia, me sigue fallando el script cuando quiero crear la tabla video

Código PHP:
create table user  (

  
username varchar(16),
  
passwd char(16not null,
  
email varchar(100not null,

  
constraint PK_username primary key (username)
);


create table noticia(

  
id integer not null,
  
username varchar(16not null,
  
tipo varchar(15),
  
genero varchar(16),
  
fecha text(15),
  
titulo varchar(50),

  
constraint PK_id primary key (id),
  
constraint FK_user foreign key (usernamereferences user (username)

);

create table articulo(

 
id integer not null,
 
noticia longtext,

 
constraint FK_noticia foreign key (idreferences noticia (id

);

create table video(

 
id integer not null,
 
noticia longtext,

 
constraint FK_noticia foreign key (idreferences noticia (id

);

create table encuesta(

  
idencuesta integer not null,
  
username varchar(16),
  
pregunta varchar(50not null
  
respuesta1 varchar(50not null,
  
respuesta2 varchar(50not null,
  
respuesta3 varchar(50not null,
  
respuesta4 varchar(50not null,


  
constraint PK_idencuesta primary key (idencuesta),
  
constraint FK_user foreign key (usernamereferences user (username)

); 
  #4 (permalink)  
Antiguo 10/09/2008, 10:15
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Respuesta: Pequeño problema con script

mostrar el error igual ayuda....
  #5 (permalink)  
Antiguo 10/09/2008, 10:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Pequeño problema con script

Bueno, eso es por algo más básico y fundamental: Un campo no clave no puede estar referenciado a un campo clave.

Además, estabas definiendo los nombres de los índices de las constraint de dos tablas de la misma forma. Cada constraint debe tener un nombre distinto. No se comparten.

Código:
drop table if exists encuesta;
drop table if exists video;
drop table if exists articulo;
drop table if exists noticia;
drop table if exists `user`;

create table `user`(
  username varchar(16) not null,
  passwd char(16) not null,
  email varchar(100) not null,

  constraint PK_username primary key (username)
);


create table noticia(

  id integer not null primary key,
  username varchar(16) not null,
  tipo varchar(15),
  genero varchar(16),
  fecha text(15),
  titulo varchar(50),
  constraint FK_user foreign key (username) references `user`(username)

);

create table articulo(

 id integer not null,
 noticia longtext,

 constraint FK_noticia foreign key (id) references noticia (id)

);

create table encuesta(
  idencuesta integer not null ,
  username varchar(16) not null,
  pregunta varchar(50) not null,
  respuesta1 varchar(50) not null,
  respuesta2 varchar(50) not null,
  respuesta3 varchar(50) not null,
  respuesta4 varchar(50) not null,
  constraint PK_ID primary key (idencuesta),
  constraint FK_userencuesta foreign key (username) references `user`(username)
);

create table video(
   id integer not null,
   noticia longtext ,
  constraint PK_videoID primary key (id),
  constraint FK_noticiavideo foreign key (id) references noticia(id)
);
Además USER es el nombre de la tabla donde MySQL guarda los usuarios y es un tipo de dato (USUARIO), por lo que es palabra reservada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:01.