SQL错误[1054] [42S22]:'字段列表'中的未知列''

时间:2017-10-19 04:07:09

标签: mysql

这个错误让我疯狂了几天

这是1000行文件中大约10行的一行,不会导入到我的表中。

我试图在insert语句中添加所有列,我尝试删除列,我已经复制到记事本中以确保没有奇怪的字符,我检查了行结尾,尝试替换空格,删除反引号和没有

有人可以指出解决方案。

使这个更奇怪,当我从客户端运行它时的一些行,如果我复制该输出并将其粘贴到新窗口它会运行正常,它会输出sql的错误。我试图从多个客户端(adminer,dbeaver,mysqlworkbench和phpmysql)运行,它在相同的位置返回相同的错误

DDL

CREATE TABLE `xxx_projects` (
  `id` int(3) unsigned zerofill NOT NULL ,
  `status` int(3) unsigned zerofill NULL DEFAULT 1,
  `name` varchar(100) NOT NULL,
  `gp_id` varchar(100) DEFAULT NULL,
  `project_type` varchar(15) DEFAULT 'SFH',
  `project_type_id` int(11) NOT NULL,
  `master_plan_id` int(11) DEFAULT '0',
  `client_id` int(3) unsigned zerofill NOT NULL,
  `city_id` int(3) unsigned zerofill NOT NULL,
  `image_id` int(11) DEFAULT NULL,
  `lat` decimal(9,6) NOT NULL,
  `lon` decimal(9,6) NOT NULL,
  `kml_info` varchar(1000) DEFAULT NULL,
  `url` varchar(1000) DEFAULT NULL,
  `last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `closeout_date` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=922 DEFAULT CHARSET=utf8;

插入声明

INSERT INTO `xxx_projects`
(`id`, `status`, `name`, `project_type_id`, `client_id`, `city_id`, `lat`, `lon`)
VALUES (563,0,'Santa Ana Collection',10,135,256,33.73369 , -117.92058 );

错误讯息

  

SQL错误[1054] [42S22]:'字段列表'中的未知列''

2 个答案:

答案 0 :(得分:0)

您将状态行声明为int,但是您尝试在其中放置一个字符。请注意' 0' 0是一个字符,0是一个整数。根据我对mysql的经验,我认为这是问题所在。希望这能解决您的问题。如果我是你,我也要宣布' lat'和' lon' as varchar。

答案 1 :(得分:0)

解决!

角色160(不间断的空间)是罪魁祸首

在我的原始源文件中,用户已从网页复制/粘贴到Excel中以获取数据

我没有正确消毒,最终在我的sql中使用了不间断的空格而不是char 32。

要在原始excel文件中解决这个问题,我使用了这个 SUBSTITUTE(JackedUpString,CHAR(160),CHAR(32))

希望这有助于其他人因为我没有在SO中找到与此相关的任何内容

This Article也非常有用