为什么我无法将值插入到我的 SQL 数据库中?

Why am I not being able to insert values into my SQL database?

我正在做一个学校项目,我们在其中创建三个表并使用 MYSQL Workbench.

向它们插入一些值

很简单的东西吧?以下是正在创建的表:

CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;

CREATE TABLE IF NOT EXISTS `mydb`.`Regiao` (
  `codRegiao` BIGINT NOT NULL,
  `nomeRegiao` VARCHAR(100) NOT NULL,
  `descricaoRegiao` TEXT NULL,
  PRIMARY KEY (`codRegiao`))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `mydb`.`Vinicola` (
  `codVinicola` BIGINT NOT NULL,
  `nomeVinicola` VARCHAR(100) NOT NULL,
  `descricaoVinicola` TEXT NULL,
  `foneVinicola` VARCHAR(15) NULL,
  `emailVinicola` VARCHAR(15) NULL,
  `codRegiao` BIGINT NOT NULL,
  PRIMARY KEY (`codVinicola`),
  INDEX `fk_Vinicola_Regiao1_idx` (`codRegiao` ASC) VISIBLE,
  CONSTRAINT `fk_Vinicola_Regiao1`
    FOREIGN KEY (`codRegiao`)
    REFERENCES `mydb`.`Regiao` (`codRegiao`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `mydb`.`Vinho` (
  `codVinho` BIGINT NOT NULL,
  `nomeVinho` VARCHAR(50) NOT NULL,
  `tipoVinho` VARCHAR(30) NOT NULL,
  `anoVinho` INT NOT NULL,
  `descricaoVinho` TEXT NULL,
  `codVinicola` BIGINT NOT NULL,
  PRIMARY KEY (`codVinho`),
  INDEX `fk_Vinho_Vinicola_idx` (`codVinicola` ASC) VISIBLE,
  CONSTRAINT `fk_Vinho_Vinicola`
    FOREIGN KEY (`codVinicola`)
    REFERENCES `mydb`.`Vinicola` (`codVinicola`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

这里是我试图在其中构建以将值插入到表中的脚本:

insert into `mydb`.`Regiao` values (1, "Campos Alegres", "Lindos campos verdes");
insert into `mydb`.`Regiao` values (2, "Campos Tristes", "Campos cinzas e planos");
insert into `mydb`.`Regiao` values (3, "Planalto Central", "Campos verdes e montanhosos");
insert into `mydb`.`Regiao` values (4, "Montanhas Roxas", "Terrenos montanhosos e rochosos");
insert into `mydb`.`Regiao` values (5, "Caverna do Dragão", "Temperatura amena e úmida");

insert into `mydb`.`Vinicola` values (1, "Durigan" , "Vinhos para te deixar alegre", "12345678901", "vinhosdurigan@yahoo.com" , 1);
insert into `mydb`.`Vinicola` values (2, "Legado" , "Vinhos para te deixar triste", "45623572901", "vinhoslegado@yahoo.com" , 2);
insert into `mydb`.`Vinicola` values (3, "Franco" , "Vinhos para subir nas alturas", "918273531", "vinhosfranco@yahoo.com" , 3);
insert into `mydb`.`Vinicola` values (4, "Bento" , "Vinhos afrodisíacos", "9102184629", "vinhosbento@yahoo.com" , 4);
insert into `mydb`.`Vinicola` values (5, "Busato" , "Vinhos do centro da terra", "9182736409", "vinhosbusato@yahoo.com" , 5);

insert into `mydb`.`Vinho` values (1, "Manacá", "Merlot", 1998, "Sabor seco e doce", 1);
insert into `mydb`.`Vinho` values (2, "Tupinambá", "Cabernet Sauvignon", 2011, "Sabor suave e doce", 2);
insert into `mydb`.`Vinho` values (3, "Xavassa", "Pinot Noir", 1972, "Vinho tinto e seco", 3);
insert into `mydb`.`Vinho` values (4, "Tiluriloca", "Syrah", 2010, "Vinho rosé", 4);
insert into `mydb`.`Vinho` values (5, "Lapolipo", "Malbec", 2021, "Vinho branco", 5);

问题是它不起作用,出于某种原因,“Vinho”和“Vinicola”正在获取 none 个值,仅显示 NULL 列。

我认为这可能与关系键有关,但我一直无法弄清楚。

如果有人能帮助我,我将不胜感激。

您的问题出在 Vinicola.emailVinicola 列的定义中

 VARCHAR(15) NULL

您的电子邮件地址超过 15 个字符,因此插入失败,然后由于限制导致 Vinho table 插入失败。

将列的大小增加到合适的值,例如 VARCHAR(80)