Django: Необработанный sql INSERT INTO phpbb db завершается ошибкой: Ошибка # 1062 Дубликат ключа - PullRequest
0 голосов
/ 13 февраля 2011

Привет, у меня сигнал при создании пользователя django, я также вручную вставляю этого пользователя в таблицу phpbb.Код выглядит следующим образом:

@receiver(post_save, sender=User)
def user_created_signal(sender, **kwargs):
    if kwargs['created']:
        user = kwargs['instance']

        fields = {
            'username': str(user.username),
            'username_clean': str(user.username),
            'user_password': "",
            'user_email': str(user.email),
            'group_id': 7,
            'user_timezone': 0,
            'user_dst': "",
            'user_lang': "sv",
            'user_type': 0,
            'user_actkey': "",
            'user_ip': "",
            'user_regdate': "",
            'user_inactive_reason': "",
            'user_inactive_time': "",
            'user_permissions': 0,
            'user_sig': "",
            'user_form_salt': "gg54jhg345",
        }
        cursor = connection.cursor()

        # Add user to phpbb

        try:

            cursor.execute("INSERT INTO spelutveckla_se.phpbb_users " + str(tuple(fields.keys())).replace("'", "") + " VALUES" + str(tuple(fields.values())))

        except Warning:
            pass

Я получаю это сообщение об ошибке: (1062, «Дублирующая запись 'test_username' для ключа 'username_clean'")

Я вижу в таблице phpbb_user, чтопользователь был создан.Но когда я удаляю пользователя и повторяю попытку, появляется такая же ошибка.Я пробовал с разными именами пользователей.Это похоже на то, что код выполняется несколько раз, но я пытался поместить точки останова / повышенное исключение в плавники, но я не могу найти никаких признаков выполнения кода более одного раза ...

ВотSQL:

"INSERT INTO spelutveckla_se.phpbb_users (имя пользователя, user_timezone, user_form_salt, username_clean, user_dst, user_lang, user_password, user_sig, user_type, user_actkey, user_ip_ user_reg__ user_id, user_reg, user_perateuser_inactive_time) VALUES ('test_username', 0, 'gg54jhg345', 'test_username', '', 'sv', '', '', 0, '', '', 0, '', 7, '', 'test@gmail.com ',' ')

Пожалуйста, помогите !! Спасибо.

1 Ответ

2 голосов
/ 14 февраля 2011

Я думаю, у меня была похожая проблема.Я переместил код, который добавляет сигнал в другой файл __init.py__.Напримериз __init__ внутри yourapp, для инициализации файла в корневой папке проекта (или наоборот)Может быть, это поможет.

...