Sql 使用主键和外键创建表时出现问题,原因是什么?

Sql 使用主键和外键创建表时出现问题,原因是什么?,sql,xcode,mariadb,heidisql,Sql,Xcode,Mariadb,Heidisql,我一直在尝试查看创建这些表的所有方法,但我没有发现问题所在,因为第一个问题出现在sintaxys中,即创建主键的问题和创建外键的问题。我想知道他们是否能帮助我 CREATE TABLE `t_ventas` ( `id_ventas` INT(10) UNSIGNED NOT NULL, `id_clientes` INT(10) UNSIGNED NOT NULL, `id_producto` INT(10) UNSIGNED NOT NULL, `id_vendedor` INT(10) U

我一直在尝试查看创建这些表的所有方法,但我没有发现问题所在,因为第一个问题出现在sintaxys中,即创建主键的问题和创建外键的问题。我想知道他们是否能帮助我

CREATE TABLE `t_ventas` (
`id_ventas` INT(10) UNSIGNED NOT NULL,
`id_clientes` INT(10) UNSIGNED NOT NULL,
`id_producto` INT(10) UNSIGNED NOT NULL,
`id_vendedor` INT(10) UNSIGNED NOT NULL,
`fecha` DATE NULL DEFAULT NULL,
PRIMARY KEY (`id_clientes`, `id_producto`, `id_vendedor`))COLLATE='latin1_swedish_ci'ENGINE=InnoDB;






CREATE TABLE `t_clientes` (
`id_clientes` INT(10) UNSIGNED NOT NULL,
`nombre` VARCHAR(50) NULL DEFAULT NULL,
`apellido` VARCHAR(50) NULL DEFAULT NULL,
`edad` INT(3) UNSIGNED NOT NULL,
`sexo` VARCHAR(50) NULL DEFAULT NULL,
INDEX `id_clientes_fkey` (`id_clientes`),
CONSTRAINT `id_clientes_fkey` FOREIGN KEY (`id_clientes`) REFERENCES `t_ventas` (`id_clientes`))COLLATE='latin1_swedish_ci'ENGINE=InnoDB;





CREATE TABLE `t_productos` (
`id_producto` INT(10) UNSIGNED NOT NULL,
`modelo` VARCHAR(50) NULL DEFAULT NULL,
`marca` VARCHAR(50) NULL DEFAULT NULL,
`precio` INT(50) NULL DEFAULT NULL,
`id_proveedor` INT(10) UNSIGNED NOT NULL
        PRIMARY KEY (`id_proveedor`),
        INDEX `id_producto_fkey` (`id_producto`),
       CONSTRAINT `id_producto_fkey` FOREIGN KEY (`id_producto`) REFERENCES `t_ventas` (`id_producto`))COLLATE='latin1_swedish_ci'ENGINE=InnoDB;




CREATE TABLE `t_proveedor` (
`id_proveedor` INT(10) UNSIGNED NOT NULL,
`nombre` VARCHAR(50) NULL DEFAULT NULL,
`apellido` VARCHAR(50) NULL DEFAULT NULL,
`direccion` VARCHAR(50) NULL DEFAULT NULL,
        INDEX `id_proveedor_fkey` (`id_proveedor`),
       CONSTRAINT `id_proveedor_fkey` FOREIGN KEY (`id_proveedor`) REFERENCES `t_proveedor` (`id_proveedor`))COLLATE='latin1_swedish_ci'ENGINE=InnoDB;






CREATE TABLE `t_vendedor` (
`id_vendedor` INT(10) UNSIGNED NOT NULL,
`nombre` VARCHAR(50) NULL DEFAULT NULL,
`apellido` VARCHAR(50) NULL DEFAULT NULL,
`id_sucursal` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`id_sucursal`),
INDEX `id_vendedor_fkey` (`id_vendedor`),
CONSTRAINT `id_vendedor_fkey` FOREIGN KEY (`id_vendedor`) REFERENCES `t_ventas` (`id_vendedor`))COLLATE='latin1_swedish_ci'ENGINE=InnoDB;





CREATE TABLE `t_sucursal` (
`id_sucursal` INT(10) UNSIGNED NOT NULL,
`nombre` VARCHAR(50) NULL DEFAULT NULL,
`direccion` VARCHAR(50) NULL DEFAULT NULL,
        INDEX `id_sucursal_fkey` (`id_sucursal`),
       CONSTRAINT `id_sucursal_fkey` FOREIGN KEY (`id_sucursal`) REFERENCES `t_vendedor` (`id_sucursal`))COLLATE='latin1_swedish_ci'ENGINE=InnoDB;

我把所有六个表都放在一起,以防只有一个表出现问题,多亏了帮助我的人……

是MariaDB还是MySQL?现在这些都不一样了?错误信息是什么?哪个语句失败?您的查询中有多个问题。第三个查询在第6行末尾缺少逗号。此外,外键的列数(3)必须与引用表的列数相同,但您只提供了一个。第四个查询缺少主键,但您正试图用外键指向它。不行。我建议你从头开始,一个接一个地运行每个表的创建。一旦你修复了一个,就从下一个开始。SQL脚本上有太多问题。