Выпуск Cloud Sql второго поколения - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть веб-приложение Java, работающее в App engine standard environment с этой конфигурацией

 <basic-scaling>
    <max-instances>25</max-instances>
    <idle-timeout>50m</idle-timeout>
  </basic-scaling>

и подключающееся к Cloud Sql второго поколения:

vCPUs  Memory     SSD Storage 
2        7.5GB       31GB 

, и я использую провайдер ссылок Eclipseсо следующими версиями

<dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>javax.persistence</artifactId>
        <version>2.1.1</version>
    </dependency>

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.7.1</version>
        <exclusions>
        <exclusion>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>javax.persistence</artifactId>
        </exclusion>
        </exclusions>           
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.12</version>
                <exclusions>
                <exclusion>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
                </exclusion>
                </exclusions>           

    </dependency>

Я поставил эти исключения, потому что это вызывает конфликт с другой библиотекой, которую я использую в POM.xml

, и все в порядке, позже я обновил версиюссылка eclipse должна быть 2.7.3 после того, как я это сделал и развернул изменения в движке приложения, он работает нормально, но через 30 минут он начал выдавать ошибку, описанную ниже, я установил версию, тогда Exception просто исчезла на 2 месяца,и сегодня, когда я изменил default_time_zone генерации облака sql sec с "+02: 00" на "+01: 00", я перезапустил свою БД, она работает нормально на 10 минут, затем начал выдавать то же исключение

Сведения об исключении

выдается для любого запроса JPA Пример: "Выберите u из Пользователь u, где u.facebookId =: fbid"

[e~p8belel/api:20181121t183222.414147041342026241].<stdout>: [EL Warning]: 2018-11-21 17:10:39.183--UnitOfWork(1650244092)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.1.v20171221-bd47e8f): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Column Index out of range, 2 > 1. 
Error Code: 0
Call: SELECT ID, about_me, account_note, account_status, birth_date, body_type, created_time, EMAIL, facebook_access_token_expry, facebook_access_token, facebook_id, game_balance, game_last_time_play, gender, hashed_password, HEIGHT, IP, job_details, last_activity_date, LIKABILITY, NAME, phone_number, signedup_device_id, signup_token, un_serious_count, class, subscription_plan, CITY_ID, marital_status_id, NEIGHBORHOOD_ID, RELIGION_ID, collage_id, job_id, my_match_id, setting_id, univ_id FROM user_table WHERE (facebook_id = ?)
    bind => [1 parameter bound]
Query: ReadAllQuery(name="User.getUserByFbId" referenceClass=User sql="SELECT ID, about_me, account_note, account_status, birth_date, body_type, created_time, EMAIL, facebook_access_token_expry, facebook_access_token, facebook_id, game_balance, game_last_time_play, gender, hashed_password, HEIGHT, IP, job_details, last_activity_date, LIKABILITY, NAME, phone_number, signedup_device_id, signup_token, un_serious_count, class, subscription_plan, CITY_ID, marital_status_id, NEIGHBORHOOD_ID, RELIGION_ID, collage_id, job_id, my_match_id, setting_id, univ_id FROM user_table WHERE (facebook_id = ?)")

Пользовательский clзадница

public class User {




@Id
    String id;


    @Column(nullable = false)
    String name;

    @Column(unique = true)
    String email;

    @Column(name="phone_number",unique = true)
    @Convert(converter = EncryptorConverter.class)
    String phoneNumber;

    @Column(name="hashed_password")
    String hashedPassword;

    @Column(name="signedup_device_id", unique=true)
    String signedUpDeviceId;

    @Column(name="signup_token")
    String signupToken; 

    @OneToOne(mappedBy = "user")
    private VerificationId verificationId;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "setting_id")
    AccountSetting setting = new AccountSetting();

    @Temporal(TemporalType.DATE)
    @Column(name = "birth_date")
    Date birthDate;

    @ManyToOne
    @JoinColumn(name="marital_status_id")
    MaritalStatus maritalStatus;

    @Enumerated(EnumType.STRING)
    @Column(name = "account_status")
    AccountStatus accountStatus;

    @OneToMany(mappedBy = "user")
    List<Device> devices;

    @Deprecated
    @ManyToOne
    City city;

    @ManyToOne  
    Neighborhood neighborhood;

    Integer height;

    @Column(name="body_type")
    @Enumerated(EnumType.STRING)
    BodyType bodyType;

    @Column(name="game_balance")
    Integer gameBalance = 0;

    @ManyToOne
    Religion religion;

    @JoinColumn(name = "my_match_id")
    User myMatch;

    Integer likability;

    @Column(name="un_serious_count")
    Integer unSeriousCount;

     @Temporal(TemporalType.TIMESTAMP)
     @Column(name = "game_last_time_play")             
     Date gameLastPlay;


    @Lob
    @Column(name = "job_details")
    @Convert(converter = EncryptorConverter.class)
    String jobDetails;

    @JoinColumn(name = "job_id")
    Job job;

    @JoinColumn(name = "univ_id")
    University university;

    @JoinColumn(name = "collage_id")
    Collage collage;

    @Lob
    @Column(name = "about_me")
    @Convert(converter = EncryptorConverter.class)
    String aboutMe;

    @Lob
    @Column(name = "account_note")
    @Convert(converter = EncryptorConverter.class)
    String accountNote;

    @Lob
    @Convert(converter = EncryptorConverter.class)
    @Column(name = "facebook_access_token", length = 700)
    String facebookAccessToken;

    @Column(name = "facebook_access_token_expry")
    @Temporal(TemporalType.DATE)
    Date faceBookTokenExpry;

    @Column(name = "facebook_id", unique = true)
    String facebookId;

    @Column(name = "gender")
    @Enumerated(EnumType.STRING)
    Gender gender;

    @Column(name = "class")
    @Enumerated(EnumType.STRING)
    UserClass userClass;

    @OneToMany(mappedBy = "user")
    @OrderBy("pictureOrder")
    List<Picture> pictures = new ArrayList<Picture>(); 

    @OneToMany(mappedBy = "user")
    List<UserAnswer> answers;

    @OneToMany(mappedBy = "user", orphanRemoval = true)
    List<WorkHistory> work = new ArrayList<>();

    @OneToMany(mappedBy = "user", orphanRemoval = true)
    List<EducationHistory> education = new ArrayList<>();

    @Column(name = "last_activity_date")
    @Temporal(TemporalType.DATE)
    Date lastActivityDate = new Date();

    @Enumerated(EnumType.STRING)
    @Column(name="subscription_plan")
    SubscriptionPlan userPlan = SubscriptionPlan.FREEMIUM;

// getters and setters

}

Мне очень жаль за такой огромный пост, но у меня действительно заканчиваются идеи, почему происходит это исключение

1 Ответ

0 голосов
/ 22 ноября 2018

Я исправил это, похоже, что ссылка на Eclipse, начиная с версии 2.7.1, имела проблему с MYSQL DB и она не стабильная, я просто понизил ее до 2.7.0, и теперь она работает просто отлично

...