我的脚本有问题:错误:pq:值对于字符类型来说太长(1)我的表是这样构建的: CREATE TABLE ip_logs (
ip_id INT PRIMARY KEY,
nickname TEXT NOT NULL,
ip_adress TEXT NOT NULL);我的脚本: dbc.exec("INSERT INTO ip_logs(ip_id, nickname, ip_adress) VALUES ((SELECT max(ip_id)+1 FROM ip_logs), ?, ?)", nick, ip);和 dbc.exec("INSERT INTO ip_logs(ip_id, nickname, ip_adress) VALUES ('20', 'test', 'test')");dbc是这样实现的:var dbc = db.connect({ driver: 'postgres', host: ip_db, username: login_db, password: password_db, database: 'ip_log' }...第二个脚本在 psql 控制台中正常工作。我在谷歌搜索但没有得到有用的信息。SinusBot 1.0.0-beta.10-202ee4dUbuntu 服务器 20.04.1 LTSpsql 控制台视图Pastebin: https://pastebin.com/YjX3FHrS[编辑1]我尝试过:dbc.exec("INSERT INTO ip_logs(ip_id, nickname, ip_adress) VALUES (20, 'test', 'test')");它给了我同样的错误:/[编辑2]我使用了这个: dbc.exec("INSERT INTO ip_logs(ip_id) VALUES (20)");并修改了表 - 现在它没有 NOT NULL 参数并且可以正常工作。插入其他数据有什么问题?[编辑3]我没有得到解决方案,但我关闭了这个线程,因为我发现了另一个问题。
1 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
不要这样做:
dbc.exec("INSERT INTO ip_logs(ip_id, nickname, ip_adress) VALUES ((SELECT max(ip_id)+1 FROM ip_logs), ?, ?)", nick, ip);
永远不要像这样计算下一个 id。它不可扩展并且可能导致竞争条件。请改用序列。
这失败了
dbc.exec("INSERT INTO ip_logs(ip_id, nickname, ip_adress) VALUES ('20', 'test', 'test')");
可能因为ip_id
是一个整数,所以这应该有效:
dbc.exec("INSERT INTO ip_logs(ip_id, nickname, ip_adress) VALUES (20, 'test', 'test')");
添加回答
举报
0/150
提交
取消