我正在开发一个使用 TypeScript 和 SQLite3 作为数据库的 Discord 机器人。当使用以下命令查询用户表时:SELECT * FROM Users;我遇到了一个奇怪的问题:返回的 Discord ID 有 3 个数字
我正在开发一个使用 TypeScript 和 SQLite3 作为数据库的 Discord 机器人。 Users
使用以下命令查询表:
SELECT * FROM Users;
我遇到一个奇怪的问题:返回的 Discord ID 有 3 个数字被替换,导致值不正确。
例如:
1248626823638552701
1248626823638552600
您可以看到只有最后 3 位数字不同。
这是我的表的架构 Users
:
CREATE TABLE IF NOT EXISTS Users (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
id TEXT NOT NULL UNIQUE, -- Discord ID stored as TEXT
xp INTEGER DEFAULT 0,
level INTEGER DEFAULT 0,
balance REAL DEFAULT 0.00,
market_items TEXT DEFAULT NULL, -- JSON array of item IDs
last_level_up TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
该 id
字段包含 Discord ID,存储时应 TEXT
避免任何整数溢出问题,因为 Discord ID 是大数字。
尽管数据库中存储了正确的 ID,但查询它会导致值不正确,略有差异。存储在 SQLite 中的数据是正确的,但问题发生在检索过程中。
如果需要,我可以提供我正在研究的机器人。
p9
p10
p11
p12
p13
p14
我期望查询 Users
表格时,检索到的 Discord ID 将与数据库中存储的 ID 完全匹配,数字不会发生任何变化。具体来说,检索到的 ID 应该 1248626823638552701
与存储的 ID 相同,而不是 1248626823638552600
.