【发布时间】:2021-03-19 05:16:41
【问题描述】:
我刚刚让我的烧瓶应用程序在 heroku 上运行,但现在注册页面给了我一个错误(我尝试注册为“另一个用户”):
ValueError:“id”列中的空值违反非空约束 详细信息:失败行包含 (null, Another, User, anotheruser, 2020-12-18, another@user.com, pbkdf2:sha256:150000$Qfubfcls$9d8b1492272dee1c8b200ff34d5a2e73e4..., 0, 0, null)。
Here is the CREATE statement for the users table:
```sql
CREATE TABLE 'users'
(
'id' integer PRIMARY KEY NOT NULL,
'fname' varchar(255),
'lname' varchar(255),
'username' varchar(255),
'dob' date,
'email' varchar(255),
'password' varchar(255),
points INTEGER DEFAULT 0,
problems INTEGER DEFAULT 0,
bio VARCHAR(200)
)
据我所知,主键不能为 NULL,而且我在部署到 Heroku 之前已经注册,但我使用的是 SQLite3,现在我使用的是 PostgreSQL。登录仍然有效。
我正在使用 CS50 库,这是导致错误的寄存器路由中的 INSERT 语句:
db.execute("INSERT INTO users(fname, lname, username, dob, email, password) VALUES (:fname, :lname, :username, :dob, :email, :hash)",
fname = request.form.get("fname"), lname = request.form.get("lname"),
username = request.form.get("username"), dob = request.form.get("birth"),
email = request.form.get("email"), hash = generate_password_hash(request.form.get("pwd")))
【问题讨论】:
-
因为它是为空。您的
INSERT不包含 ID,并且您的 ID 字段未设置为自动递增。