Ошибка: ER_DATA_TOO_LONG: слишком длинные данные для столбца "данные" в строке 1
Ниже приведено длинное выражение select, и я слишком долго получаю данные об ошибках на моем Node-сервере, когда запускаю его, но когда я копирую и вставляю его в 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_TOO_LONG: слишком длинные данные для столбца "данные" в строке 1 в Query.Sequence._packetToError (/root/site/node_modules/mysql/lib/protocol /septions/Sequence.js:52:14) в Query.ErrorPacket (/root/site/node_modules/mysql/lib/protocol/sequence /Q uery.js:77:18) в Protocol._parsePacket (/root/site/node_modules/mysql/lib/protocol/Protoco 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:2 8) в emitOne (events.js:116:13) в Socket.emit (events.js:211:7) в addChunk (_stream_readable.js:263:12) в readableAddChunk (_stream_readable.js:250:11) -------------------- в Pool.query (/root/site/node_modules/mysql) /lib/Pool.js:199:23) в MySQLStore.set (/root/site/node_modules/express-mysql-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 [как _callback] (/root/site/ маршруты / результаты Router.js:184:9) в Query.Sequence.end (/root/site/node_modules/mysql/lib/protocol/sequence / Sequence.js:88:24)
2 ответа
Кажется, проблема была в асинхронной проблеме узла (я должен был это понять раньше).
Комментируя
else {
//req.session.results = rows;
res.send(rows)
}
теперь все работает отлично, ошибок нет, все отображается правильно. Michael - sqlbot был прав, считая, что это не какая-то ошибка запроса, я проголосую, если у меня когда-нибудь будет достаточно представителей для этого.
Так как вы получаете столько данных, можете ли вы просто
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';