【问题标题】:Error Code: 1366. Incorrect integer value: ' ' for column 'branch_id' at row 20错误代码:1366。不正确的整数值:第 20 行的列“branch_id”的“”
【发布时间】:2020-05-31 14:47:40
【问题描述】:

我目前是 SQL 新手。我正在使用 mymysql,当尝试在某些情况下我有空值的列中上传数据时,我得到了主题中的响应。我创建表的脚本是:

CREATE TABLE `transactions` (
  `Card_number` varchar(20) NOT NULL,
  `idtransactions` int(11) unsigned NOT NULL,
  `amount` decimal(8,2) NOT NULL,
  `tra_date` date NOT NULL,
  `tra_time` time NOT NULL,
  `branch_id` INT(3) DEFAULT NULL,
  PRIMARY KEY (`idtransactions`),
  UNIQUE KEY `idtransactions_UNIQUE` (`idtransactions`),
  KEY `branch_id_idx` (`branch_id`),
  KEY `Card_number_idx` (`Card_number`),
  CONSTRAINT `Card_number` FOREIGN KEY (`Card_number`) REFERENCES `card` (`Card_number`),
  CONSTRAINT `branch_id` FOREIGN KEY (`branch_id`) REFERENCES `branch` (`branch_id`)
) ;

我尝试从中上传数据的文件被加密为 UTF8。 如果我输入一个值,例如。对于 uplod 文件中没有值的字段,我得到不同的错误,这些错误涉及到父表的主键。我做错了什么吗? 提前谢谢你。

【问题讨论】:

  • 我认为这是您如何导入数据而不是表结构的问题。如果您使用 LOAD DATA 语句或mysqlimport 命令,请尝试将值 \N 用于 null。
  • 另外你的唯一键是多余的,它重复了主键。
  • 感谢您的回复。正如我所说,我是 sql 的新手,我真的不明白你想用 \N 值说什么。我正在使用以下 LOAD DATA 语句加载文件,如下所示“ LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/transactions.csv' INTO TABLE dvisa.transactions CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;"

标签: mysql null default isnull


【解决方案1】:

如果您不发布您尝试上传的文件的样本,我只能猜测; 无论如何,我认为您必须确保 transactions.csv 文件中包含所有非 NULL 值,因为您将 NON NULL 子句放在表中的所有文件中。 您还应该确保您加载的内容与您放置外键的卡片和分支表具有关系完整性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多