Mysql 错误:ER_DATA_过长:第1行“DATA”列的数据过长

Mysql 错误:ER_DATA_过长:第1行“DATA”列的数据过长,mysql,node.js,mysql-workbench,Mysql,Node.js,Mysql Workbench,下面我有一个很长的select语句,当我运行它时,我在我的节点服务器上收到的错误数据太长,但是当我将它复制粘贴到MySQL Workbench中时,它工作得很好。我如何着手解决这个问题 SELECT `199_roster`.`first`, `199_roster`.`last`, `199_roster`.`gender`, `199_roster`.`grade`, `199_results`.`ath_id`, `199_results`.`place`, `199_results`.`

下面我有一个很长的select语句,当我运行它时,我在我的节点服务器上收到的错误数据太长,但是当我将它复制粘贴到MySQL Workbench中时,它工作得很好。我如何着手解决这个问题

SELECT `199_roster`.`first`, `199_roster`.`last`, `199_roster`.`gender`, `199_roster`.`grade`, `199_results`.`ath_id`, `199_results`.`place`, `199_results`.`date`, `199_results`.`comment`, `199_results`.`100m Hurdles (F)`, `199_results`.`110m Hurdles (M)`, `199_results`.`100m Dash (F)`, `199_results`.`100m Dash (M)`, `199_results`.`1600m Run (F)`, `199_results`.`1600m Run (M)`, `199_results`.`4x100m Relay (F)`, `199_results`.`4x100m Relay (M)`, `199_results`.`400m Dash (F)`, `199_results`.`400m Dash (M)`, `199_results`.`200m Hurdles (F)`, `199_results`.`200m Hurdles (M)`, `199_results`.`800m Run (F)`, `199_results`.`800m Run (M)`, `199_results`.`200m Dash (F)`, `199_results`.`200m Dash (M)`, `199_results`.`4x400m Relay (F)`, `199_results`.`4x400m Relay (M)`, `199_results`.`High Jump (F)`, `199_results`.`High Jump (M)`, `199_results`.`Long Jump (F)`, `199_results`.`Long Jump (M)`, `199_results`.`Shot Put (F)`, `199_results`.`Shot Put (M)`, `199_results`.`Discus (F)`, `199_results`.`Discus (M)`, `199_results`.`Pole Vault (F)`, `199_results`.`Pole Vault (M)`, `199_results`.`3200m Run (M)`, `199_results`.`3200m Run (F)`, `199_results`.`300m Hurdles (M)`, `199_results`.`300m Hurdles (F)`, `199_results`.`4x800m Relay (M)`, `199_results`.`4x800m Relay (F)`, `199_results`.`100m Hurd. Trial (F)`, `199_results`.`110m Hurd. Trial (M)`, `199_results`.`100m Dash Trial (F)`, `199_results`.`100m Dash Trial (M)`, `199_results`.`200m Dash Trial (F)`, `199_results`.`200m Dash Trial (M)`, `199_results`.`400m Hurdles (F)`, `199_results`.`400m Hurdles (M)`, `199_results`.`2000m Steeplechase (F)`, `199_results`.`2000m Steeplechase (M)`, `199_results`.`3000m Steeplechase (F)`, `199_results`.`3000m Steeplechase (M)`, `199_results`.`1500m Run (F)`, `199_results`.`1500m Run (M)`, `199_results`.`3000m Run (F)`, `199_results`.`3000m Run (M)`, `199_results`.`5000m Run (F)`, `199_results`.`5000m Run (M)`, `199_results`.`10000m Run (F)`, `199_results`.`10000m Run (M)`, `199_results`.`Triple Jump (F)`, `199_results`.`Triple Jump (M)`, `199_results`.`Hammer Throw (F)`, `199_results`.`Hammer Throw (M)`, `199_results`.`Javelin Throw (F)`, `199_results`.`Javelin Throw (M)`, `199_results`.`Distance Medley Relay (F)`, `199_results`.`Distance Medley Relay (M)`, `199_results`.`Sprint Medley Relay (F)`, `199_results`.`Sprint Medley Relay (M)`, `199_results`.`4x200m Relay (F)`, `199_results`.`4x200m Relay (M)`, `199_results`.`4x1500m Relay (F)`, `199_results`.`4x1500m Relay (M)`, `199_results`.`4x1600m Relay (F)`, `199_results`.`4x1600m Relay (M)`, `199_results`.`Shuttle Hurdle Relay (F)`, `199_results`.`Shuttle Hurdle Relay (M)`, `199_results`.`60m Dash Trial (F)`, `199_results`.`60m Dash Trial (M)`, `199_results`.`60m Dash (F)`, `199_results`.`60m Dash (M)`, `199_results`.`60m Hurd. Trial (F)`, `199_results`.`60m Hurd. Trial (M)`, `199_results`.`60m Hurdles (F)`, `199_results`.`60m Hurdles (M)`, `199_results`.`50m Dash Trial (F)`, `199_results`.`50m Dash Trial (M)`, `199_results`.`50m Dash (F)`, `199_results`.`50m Dash (M)`, `199_results`.`50m Hurd. Trial (F)`, `199_results`.`50m Hurd. Trial (M)`, `199_results`.`50m Hurdles (F)`, `199_results`.`50m Hurdles (M)`, `199_results`.`55m Dash Trial (F)`, `199_results`.`55m Dash Trial (M)`, `199_results`.`55m Dash (F)`, `199_results`.`55m Dash (M)`, `199_results`.`55m Hurd. Trial (F)`, `199_results`.`55m Hurd. Trial (M)`, `199_results`.`55m Hurdles (F)`, `199_results`.`55m Hurdles (M)`, `199_results`.`100y Dash (F)`, `199_results`.`100y Dash (M)`, `199_results`.`Mile Run (F)`, `199_results`.`Mile Run (M)` FROM `199_results` INNER JOIN `199_roster` ON `199_roster`.`ath_id` = `199_results`.`ath_id` WHERE `199_results`.`date` BETWEEN '2018-04-01 00:00:01' AND '2018-05-08 23:59:59';
下面是我的.js文件中进行查询的部分。通常我在客户端创建查询并动态发送,但为了调试,我将变量设置为如下

var fullQuery = "SELECT * FROM  `199_results` INNER JOIN `199_roster` ON `199_roster`.`ath_id` = `199_results`.`ath_id` WHERE `199_results`.`date` BETWEEN '2018-04-01 00:00:01' AND '2018-05-08 23:59:59';"

    const db = require("../db"); 
    db.query(fullQuery, (err, rows, fields) => {
        if (err) { 
            res.render("results", { 
                title: "Results",
                mysqlError: err.message
                })
            return console.error('stupid error', err)
        } else {
            req.session.results = rows;
            res.send(rows)
        }
    })      
以下是错误消息中的更多信息(如果有帮助):

错误:ER_DATA_过长:第1行“DATA”列的数据过长 位于Query.Sequence._packetToError/root/site/node_modules/mysql/lib/protocol/sequences/Sequence.js:52:14 在Query.ErrorPacket/root/site/node_modules/mysql/lib/protocol/sequences/Q uery.js:77:18 at Protocol._parsePacket/root/site/node_modules/mysql/lib/Protocol/Protocol l.js:279:23 在Parser.write/root/site/node_modules/mysql/lib/protocol/Parser.js:76:12 在Protocol.write/root/site/node_modules/mysql/lib/Protocol/Protocol.js:39:16 在插座上/root/site/node_modules/mysql/lib/Connection.js:103:28 在emitOne事件中。js:116:13 在Socket.emit events.js:211:7 在addChunk\u stream\u readable.js:263:12 在readableAddChunk\u stream\u readable.js:250:11 ---------- 在Pool.query/root/site/node_modules/mysql/lib/Pool.js:199:23 在MySQLStore.set/root/site/node_modules/expressmysql session/index.js:19 9:19 在Session.save/root/site/node_modules/express Session/Session/Session.js:72:25 在Session.save/root/site/node_modules/express Session/index.js:381:15 在ServerResponse.end/root/site/node_modules/express session/index.js:330:21 在ServerResponse.send/root/site/node_modules/express/lib/response.js:221:10 在ServerResponse.json/root/site/node_modules/express/lib/response.js:267:15 在ServerResponse.send/root/site/node_modules/express/lib/response.js:158:21 在Query.db.Query[as\u callback]/root/site/routes/resultsRouter.js:184:9 位于Query.Sequence.end/root/site/node_modules/mysql/lib/protocol/sequences/Sequence.js:88:24


既然你正在检索这么多数据,你能不能

SELECT * FROM   FROM `199_results` INNER JOIN `199_roster` ON 
`199_roster`.`ath_id` = `199_results`.`ath_id` WHERE `199_results`.`date` 
BETWEEN '2018-04-01 00:00:01' AND '2018-05-08 23:59:59';

这个问题原来是一个节点异步问题,我似乎应该早点意识到这一点

评出

else {
        //req.session.results = rows;
        res.send(rows)
}

现在一切都很好,没有错误,一切都显示正确。看到这不是某种查询错误是正确的,如果有足够的代表,我会投票。

您提供的查询更优雅,可以在MySQL Workbench中工作,但不能在服务器上工作。我收到了相同的错误,数据太长。你确定是这个查询吗?该错误通常伴随着insert或update查询,并意味着您正试图在列命名数据中插入过长的值。如果它有另一个意思,我不知道。我也被这弄糊涂了,因为我在网上到处搜索时,找不到任何带有这个错误的select语句。我已经编辑了我的问题,以显示我是如何发送查询的,所以我非常确定它是发送的内容。我想不出具体的机制,但我想知道这是否与节点和工作台之间不同的max_allowed_数据包值有关。不应该,但如果没有另一个想法,那就是我的下一个想法。这两个表都不是视图,是吗?我将允许的最大数据包大小从2m增加到16m,数据非常小,所以我认为不是这样,但值得一试。表中有105列会导致这个问题吗?我的大多数列都是varchar<255。我也遇到过同样的问题。req.session.import_result=结果;是错误的来源,而不是以前进行的任何查询