Слишком длинные данные для столбца "пароль" в строке 1 - PullRequest
0 голосов
/ 17 июня 2020

Я создаю веб-приложение Java Spring Boot, и сегодня я удалил все содержимое одной из моих таблиц под названием «пользователи». В моем приложении «администратор» (я) может регистрировать других пользователей в приложении, чтобы они могли войти в систему и использовать приложение.

Все работало нормально до того, как я выполнил команду drop table users в MySQL Верстак. И теперь, когда я go регистрирую пользователя, вместо того, чтобы работать должным образом, я получаю сообщение об ошибке:

«Данные слишком длинные для столбца« пароль »в строке 1».

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

Любая помощь будет принята либо к

  1. Восстановить таблицу туда, где она была (что я не думаю, что здесь возможен откат)
  2. Рисунок выяснить, что могло измениться в коде.

Ниже у меня есть создание объекта, но, опять же, я ничего не изменил, и все работало нормально. У меня тоже идет шифрование, но, опять же, единственное, что я сделал, это отбросил таблицу, а затем воссоздал ее при запуске как «Java Application», как я всегда делал.

package bcoreHW.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

import bcoreHW.validation.PasswordMatch;


@Entity
@Table(name="Users")
@PasswordMatch(message="{register.repeatPassword.mismatch}")
public class SiteUser {

    @Id
    @Column(name="userId")
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long userId;

    @Column(name="email", unique=true)
    @Email(message="{register.email.invalid}")
    @NotBlank(message="{register.email.invalid}")
    private String email;

    @Transient // meaning it will not be saved in DB
    @Size(min=5, max=15, message="{register.password.size}")
    private String plainPassword; //unencrytped

    @Transient
    private String repeatPassword;

    @Column(name="password", length=50)
    private String password;

    @Column(name="role", length=20)
    private String role;


    public String getPlainPassword() {
        return plainPassword;
    }


    public void setPlainPassword(String plainPassword) {
        this.password = new BCryptPasswordEncoder().encode(plainPassword);
        this.plainPassword = plainPassword;
    }

    public String getRole() {
        return role;
    }


    public void setRole(String role) {
        this.role = role;
    }


    public Long getUserId() {
        return userId;
    }


    public void setUserId(Long userId) {
        this.userId = userId;
    }


    public String getEmail() {
        return email;
    }


    public void setEmail(String email) {
        this.email = email;
    }


    public String getPassword() {
        return password;
    }


    public void setPassword(String password) {
        this.password = password;
    }


    public String getRepeatPassword() {
        return repeatPassword;
    }


    public void setRepeatPassword(String repeatPassword) {
        this.repeatPassword = repeatPassword;
    }
}

...