node.js - NodeJS mssql库向数据库插入奇怪的特殊字符
问题描述
我尝试使用 nodeJS 中的 mssql 将记录插入到我的表中。我的参数product_code = "0123456789"
是一个字符串。我在插入表之前检查了它,但是在运行查询之后,如果我将该字段格式化为 varchar(30),则数据库中出现的记录是“?0123456789”。如果我将其重新格式化为 nvarchar(30),它将显示为“ÿ0123456789”。我不知道为什么它只发生在这个参数上。我试图找出3个原因:
- 我的代码问题:我在 tmux 会话中使用 vim。我试图列出所有隐藏的字符,
set list; set listchars=tab:→\ ,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»
但没有发现任何奇怪的东西 - 我的数据库服务器问题:这个问题以前从未发生过,我对数据库服务器一无所知,也没有专业知识来弄清楚它会发生什么。我们使用远程数据库服务器,它在 Windows 服务器上运行 Microsoft SQL。如果你有一些线索,请给我一些关键词来谷歌它。
- 我的网络问题:我的 Debian 10 操作系统是否有病毒?我
ssh
到我的后端服务器并启动 tmux 会话,并将 vim 作为文本编辑器运行。我使用这种方法数千小时,但我第一次遇到这个问题。
let pool;
exports.DB = MSSQL;
exports.init = async function(){
const DB_HOST = process.env.DB_HOST;
const DB_USER = process.env.DB_USER;
const DB_PASS = process.env.DB_PASS;
const DB_DATABASE = process.env.DB_DATABASE;
const config = {
user: DB_USER,
password: DB_PASS,
server: DB_HOST,
database: DB_DATABASE,
options: {
//encrypt: true // Use this if you're on Windows Azure
}
}
console.log("DATABASE:");
console.log("Host: " + DB_HOST);
console.log("User: " + DB_USER);
console.log("Database: " + DB_DATABASE);
try{
pool = await MSSQL.connect(config);
}catch(error){
console.log("DATABASE: Failed to connect to SQL Server");
}
if(pool){
console.log("DATABASE: Connected");
}
}
exports.getPool = function(){
return pool;
}
myFunct = async function(product_code, other_param){
try {
console.log("product_code");
console.log(typeof product_code);
console.log(product_code);
const pool = MSSQL.getPool();
await pool.request().input('other_field', other_param).input('product_code', product_code).query("INSERT INTO my_database_table (product_code, other_field) VALUES(@product_code, @other_field);");
return {
result: true
}
} catch (error) {
console.trace(error);
console.log("myFunct: " + error);
return {
result: false,
error: ERROR.SYSTEM
}
}
}```
解决方案
推荐阅读
- c# - 正则表达式检查字符串中某处至少 2 个字符
- reactjs - Redux 存储包含正确的状态,但似乎是错误的
- python - 在 Anaconda 中找不到 pygame
- javascript - 使用 foreach asp.net 核心中的 multiplus 按钮获取值
- qt - 使用 QML OpacityMask 对覆盖矩形的上角进行四舍五入
- python - Nginx 和 Gunicorn WSGI 变量
- php - 安装 Guzzle 后 Laravel Scout 错误“未定义的类常量 'VERSION'”
- pytorch - 从 TPU 保存的 pytorch 模型在 CPU 上运行
- java - IllegalArgumentException - 休眠错误 - org.hibernate.hql.internal.ast.QuerySyntaxException:Clasa 未映射 [SELECT c FROM Clasa c]
- javascript - 提交和序列化时忽略表单元素