@Maxemp

Как решить проблему при регистрации?

При регистрации выводит эту ошибку:

Integrity constraint violation – yii\db\IntegrityException
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'юзер' for key 'username'
The SQL being executed was: INSERT INTO `user` (`username`, `email`, `password_hash`, `created_at`, `status`, `email_confirm_token`, `auth_key`, `updated_at`) VALUES ('юзер', 'user4321@mail.ru', '$2y$13$Moc3nJRkqFsi0Rk0FiYr9uj8Cnli28t2iaixEf3OCqt0PbwIpCEVu', 1516701303, 0, 'iyECyGm4XvM680ac8YZ2aoJZEOy7U_XX', 'eAwFNengxB7G5o9t75oFpWNWWPdvgGqn', 1516701303)
Error Info: Array
(
    [0] => 23000
    [1] => 1062
    [2] => Duplicate entry 'юзер' for key 'username'
)
↵
Caused by: PDOException
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'юзер' for key 'username'
in /app/vendor/yiisoft/yii2/db/Command.php at line 994


Но юзера в бд сохраняет.

Вот код сущности User:
Так как он слишком длинный, лучше оставлю ссылку на репозиторий: User

Подскажите, что делать, куда копать?
UPD:
Извиняюсь, за маленькой количество информации в вопросе это потому что я вообще непонимаю откуда могла появиться такая ошибка.
  • Вопрос задан
  • 5036 просмотров
Решения вопроса 2
Судя по ошибке у вас в базе уже есть пользователь с username "юзер", а так как в базе это поле уникально, то второго с таким же именем сохранить не может.

В таких случаях надо проверять на уникальность
public function rules()
    {
        return [
            [['username'], 'unique', 'targetClass' => User::className(), 'message' => 'Пользователь уже существует'],
        ];
    }
Ответ написан
OKyJIucT
@OKyJIucT
Sunshine reggae
Если сохраняет юзера в базу и выдает ошибку, очевидно, что вы дважды пытаетесь зарегистрировать одного и того же юзера, возможно, где то зациклилось у вас. Проверьте контроллер, может у вас там редирект на ту же страницу идет, с которой пришла регистрация, и запрос выполняется еще раз.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
1062 Duplicate entry 'юзер' for key 'username'

Это ошибка базы данных - вы создаете запись с значением username которое уже есть в базе. Решение - проверять еще до сохранение наличие юзера с указанным username
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы