【问题标题】:MySQL error on pythonanywhere when trying to insert record尝试插入记录时pythonanywhere上的MySQL错误
【发布时间】:2022-01-20 15:58:35
【问题描述】:

当我尝试在 pythonanywhere MySQL 上注册记录时遇到一个奇怪的错误。

MySQLdb._exceptions.OperationalError: (1136, "Column count doesn't match value count at row 1")
cursor.execute('INSERT INTO accounts VALUES (NULL, %s, %s, %s, %s, %s, %s, NOW())', (username, salt, hashed, email,token,plan,))

本地运行良好。

DROP TABLE IF EXISTS `accounts`;
CREATE TABLE IF NOT EXISTS `accounts` (
    `id` int(16) NOT NULL AUTO_INCREMENT,
    `username` varchar(50) NOT NULL,
    `salt` varchar(29) NOT NULL,
    `pw_hash` varchar(60) NOT NULL,
    `email` varchar(320) NOT NULL,
    `token` varchar(32) NOT NULL,
    `plan` varchar(32) NOT NULL,
    `last_payment` date DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

【问题讨论】:

    标签: python mysql pythonanywhere


    【解决方案1】:

    您需要定义要插入的列:

    cursor.execute("INSERT INTO accounts(username, salt, pw_hash, email, token, plan, last_payment) VALUES (%s, %s, %s, %s, %s, %s, NOW())", (username, salt, hashed, email, token, plan))
    

    无需在此处为id 添加 NULL 值 - 您已将其定义为 NOT NULLAUTO_INCREMENT,这意味着 MySQL 将为您填充该值。

    【讨论】:

      【解决方案2】:

      您的元组中的逗号过多。

      删除它

      cursor.execute('INSERT INTO accounts VALUES (NULL, %s, %s, %s, %s, %s, %s, NOW())', (username, salt, hashed, email,token,plan))
      

      【讨论】:

        猜你喜欢
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 2015-04-10
        • 2021-03-31
        • 1970-01-01
        • 1970-01-01
        • 2022-07-29
        • 1970-01-01
        相关资源
        最近更新 更多