Home > Blockchain >  When ever I run MySQL query I get syntax error
When ever I run MySQL query I get syntax error

Time:04-26

so basically I'm trying to create multiple tables at the same time from a Entity Relation diagram from lucidchart which it generates the query of the the E-R

CREATE TABLE `Centro_Vacunacion` (
  `ID_Centro_Vacunacion` INT,
  `Direccion_Centro_Vacunacion` NVARCHAR,
  `Fecha_Inicio_Operacion` DATE,
  `ID_Provincia` INT,
  PRIMARY KEY (`ID_Centro_Vacunacion`)
);

CREATE TABLE `Personal_Medico` (
  `ID_Personal_Medico` INT,
  `Nombre_Personal_Medico` NVARCHAR,
  `Apellido_Personal_Medico` NVARCHAR,
  `Cedula_Personal_Medico` TINYINT,
  PRIMARY KEY (`ID_Personal_Medico`),
  KEY `UNIQUE` (`Cedula_Personal_Medico`)
);

CREATE TABLE `Personal_Centro` (
  `ID_Personal_Medico` INT,
  `ID_Centro_Vacunacion` INT,
  FOREIGN KEY (`ID_Personal_Medico`) REFERENCES `Centro_Vacunacion`(`Fecha_Inicio_Operacion`),
  FOREIGN KEY (`ID_Personal_Medico`) REFERENCES `Personal_Medico`(`Nombre_Personal_Medico`)
);

CREATE TABLE `Provincia` (
  `ID_Provincia` INT,
  `Nombre_Provincia` NVARCHAR,
  `ID_Pais` INT,
  PRIMARY KEY (`ID_Provincia`)
);

CREATE TABLE `Almacen` (
  `ID_Almacen` INT,
  `Nombre_Almacen` NVARCHAR,
  `Direccion_Almacen` TINYTEXT,
  `Cantidad_Vacunas` INT,
  `Cantidad_Lotes` INT,
  `ID_Vacuna` INT,
  PRIMARY KEY (`ID_Almacen`)
);

CREATE TABLE `Persona` (
  `ID_Persona` INT,
  `Nombre_Persona` NVARCHAR,
  `Apellido_Persona` NVARCHAR,
  `Cedula_Persona` TINYINT,
  `Fecha_Nacimiento` DATE,
  `Sexo` NVARCHAR(12),
  PRIMARY KEY (`ID_Persona`),
  KEY `UNIQUE` (`Cedula_Persona`)
);

CREATE TABLE `Municipio` (
  `ID_Municpio` INT,
  `Nombre_Municipio` NVARCHAR,
  `ID_Provincia` INT,
  PRIMARY KEY (`ID_Municpio`),
  FOREIGN KEY (`ID_Municpio`) REFERENCES `Provincia`(`ID_Provincia`)
);

CREATE TABLE `Pais` (
  `ID_Pais` INT,
  `Nombre_Pais` NVARCHAR,
  PRIMARY KEY (`ID_Pais`)
);

CREATE TABLE `Laboratorio` (
  `ID_Laboratorio` INT,
  `Nombre_Laboratorio` NVARCHAR,
  `Direccion_Laboratorio` NVARCHAR,
  `Fecha_Registro` DATE,
  `ID_Pais` INT,
  `Vacunas_En_Laboratorio` INT,
  PRIMARY KEY (`ID_Laboratorio`),
  FOREIGN KEY (`Direccion_Laboratorio`) REFERENCES `Pais`(`ID_Pais`)
);

CREATE TABLE `Vacuna` (
  `ID_Vacuna` INT,
  `Nombre_Vacuna` NVARCHAR,
  `Lote` NVARCHAR,
  `Laboratorio_Fabricacion` TINYTEXT(50),
  `Cantidad_Dosis` TINYINT,
  `Intervalo_Dosis` TINYINT,
  `Fecha_Creacion` DATE,
  `Fecha_Vencimiento` DATE,
  `ID_Almacen` INT,
  PRIMARY KEY (`ID_Vacuna`)
);

CREATE TABLE `Datos_Vacunacion` (
  `ID_Centro_Vacunacion` INT,
  `ID_Persona` INT,
  `Edad_Actual` TINYINT,
  `ID_Vacuna` INT,
  `Fecha_Vacunacion` DATE,
  `ID_Personal_Medico` INT,
  PRIMARY KEY (`ID_Centro_Vacunacion`),
  FOREIGN KEY (`Edad_Actual`) REFERENCES `Persona`(`Apellido_Persona`),
  FOREIGN KEY (`Edad_Actual`) REFERENCES `Vacuna`(`Laboratorio_Fabricacion`)
);

CREATE TABLE `Vacuna_Laboratorio` (
  `ID_Vacuna` INT,
  `ID_Laboratorio` INT,
  `Vacunas_Totales_Producidas` INT
);

CREATE TABLE `Centro_Almacen` (
  `ID_Centro_Vacunacion` INT,
  `ID_Almacen` INT,
  FOREIGN KEY (`ID_Almacen`) REFERENCES `Almacen`(`Direccion_Almacen`),
  FOREIGN KEY (`ID_Centro_Vacunacion`) REFERENCES `Centro_Vacunacion`(`Direccion_Centro_Vacunacion`)
);

When ever I run the query I get a syntax error but I cant figure out where. I ve tried to recreate one table with a mysql table generator but it seems to generate the same query.

CodePudding user response:

you must define a size for NVARCHAR like NVARCHAR(255)

CREATE TABLE `Personal_Medico` (
  `ID_Personal_Medico` INT,
  `Nombre_Personal_Medico` NVARCHAR(255),
  `Apellido_Personal_Medico` NVARCHAR(255),
  `Cedula_Personal_Medico` TINYINT,
  PRIMARY KEY (`ID_Personal_Medico`),
  KEY `UNIQUE` (`Cedula_Personal_Medico`)
);

i suspect your code is not for MYSQL

see it runs in MySQL with VARCHAR https://www.db-fiddle.com/f/nJMBURY4NcXG2hgYLFhbBf/0

  • Related