node+sqlserver 批量导入出现:"Invalid column type from bcp client for colid" 的处理方法

384 阅读1分钟

node+sqlserver在做批量导入的时候出现 Invalid column type from bcp client for colid 错误大致如下:

RequestError: Invalid column type from bcp client for colid 1.
at handleError (D:\liangliwen\LittleSun\LittleSunApi\node_modules\mssql\lib\tedious\request.js:233:15)
at Connection.emit (events.js:400:28)
at Parser.<anonymous> (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\lib\connection.js:832:12)
at Parser.emit (events.js:400:28)
at Parser.<anonymous> (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\lib\token\token-stream-parser.js:37:14)
at Parser.emit (events.js:400:28)
at addChunk (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:298:12)
at readableAddChunk (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:280:11)
at Parser.Readable.push (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:241:10)     
at Parser.Transform.push (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\node_modules\readable-stream\lib\_stream_transform.js:139:32) { 
  code: 'EREQUEST',
  originalError: Error: Invalid column type from bcp client for colid 1.
  at handleError (D:\liangliwen\LittleSun\LittleSunApi\node_modules\mssql\lib\tedious\request.js:231:19)
  at Connection.emit (events.js:400:28)
  at Parser.<anonymous> (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\lib\connection.js:832:12)
  at Parser.emit (events.js:400:28)
  at Parser.<anonymous> (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\lib\token\token-stream-parser.js:37:14)
  at Parser.emit (events.js:400:28)
  at addChunk (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:298:12)
  at readableAddChunk (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:280:11)       
  at Parser.Readable.push (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:241:10)   
  at Parser.Transform.push (D:\liangliwen\LittleSun\LittleSunApi\node_modules\tedious\node_modules\readable-stream\lib\_stream_transform.js:139:32) 
{
info: ErrorMessageToken {
  name: 'ERROR',
  event: 'errorMessage',
  number: 4816,
  state: 1,
  class: 16,
  message: 'Invalid column type from bcp client for colid 1.',
  serverName: 'DESKTOP-L4SSJD0',
  procName: '',
  lineNumber: 1
}
  },
  number: 4816,
  lineNumber: 1,
  state: 1,
  class: 16,
  serverName: 'DESKTOP-L4SSJD0',
  procName: '',
  precedingErrors: []
}

主要问题在于,你导入的表里存在 nvarchar(MAX) 这样的类型,所以需要你在table里指定 如:

 table.columns.add("code", db.sqlserver.NVarChar('MAX'), { nullable: true });    

nullable(是否空值)也很关键,应该和你数据库里的相同。