为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript Sinusbot PostgreSQL\ 错误:pq:对于字符类型来说值太长

JavaScript Sinusbot PostgreSQL\ 错误:pq:对于字符类型来说值太长

潇湘沐 2023-12-14 14:39:44
我的脚本有问题:错误: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个赞

  1. 不要这样做:

dbc.exec("INSERT INTO ip_logs(ip_id, nickname, ip_adress)
VALUES ((SELECT max(ip_id)+1 FROM ip_logs), ?, ?)", nick, ip);

永远不要像这样计算下一个 id。它不可扩展并且可能导致竞争条件。请改用序列。

  1. 这失败了

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')");


查看完整回答
反对 回复 2023-12-14
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信