ошибка целого числа вне диапазона в столбце BigInteger sqlalchemy на heroku - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь понять, почему я получаю sql ошибок для следующих объектов. Я использую базу данных PostGresSql на heroku

class Member(BASE):
    __tablename__ = "members"

    name = Column(String)
    discord_id = Column(BigInteger, primary_key=True,nullable=False)
    role = Column(String, ForeignKey('roles.name'))
    nick = Column(String)
    rs_runs = relationship("RSRun",secondary='member_on_rs_run')

    def __init__(self,name,discord_id,nick="" ):
        self.name = name
        self.discord_id = discord_id
        self.nick = nick

class RSRun(BASE):
    __tablename__ = "rs_runs"
    id = Column(Integer, primary_key=True, nullable=False)
    level = Column(String)
    dtg = Column(DateTime)
    members = relationship("Member",secondary='member_on_rs_run')


class MemberOnRSRun(BASE):
    __tablename__ = "member_on_rs_run"
    member_id = Column(BigInteger, ForeignKey('members.discord_id'),primary_key = True)
    run_id = Column(Integer,ForeignKey('rs_runs.id'),primary_key=True)

Я получаю ошибки здесь

sqlalchemy.exc.DataError: (psycopg2.errors.NumericValueOutOfRange) integer out of range

[SQL: INSERT INTO members (name, discord_id, role, nick) VALUES (%(name)s, %(discord_id)s, %(role)s, %(nick)s)]
[parameters: {'name': '', 'discord_id': 126793648221192192, 'role': None, 'nick': ''}]

Я проверил, а discord_id находится в пределах допустимого диапазон PostGres BigInt, который я предполагаю, что я получаю с sqlalchemy колонкой Biginteger. Но он продолжает говорить мне, что это вне диапазона для целого числа. Очевидно, что я хочу использовать тот же идентификатор, что и Discord, поскольку это идентификатор участника на Discord.

1 Ответ

0 голосов
/ 04 апреля 2020

Внесение изменений в python объекты, которые вы используете в декларативной форме sqlalchemy, не заставит Герою обновлять базу данных. Чтобы изменения вступили в силу, вы должны вручную удалить базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...