sqlalchemy.exc.DataError:(psycopg2.errors.StringDataRightTruncation)值对于类型字符变化来说太长(80)

问题描述 投票:0回答:1

我正在尝试使用 Flask 和 Heroku 在线迁移我的数据库。我创建了一个名为 userinfo.db 的数据库,它包含用户名和密码,为了安全起见,后者经过哈希处理,因此我自然地将字符限制设置为 80。在我的本地服务器上,我没有遇到任何问题,但迁移后我得到了这个错误:

sqlalchemy.exc.DataError: (psycopg2.errors.StringDataRightTruncation) value too long for type character varying(80)

我在网上搜索,听起来psychopg正在将其转换为二进制,这会增加字符串的大小。我尝试将数据库调整为 TEXT 而不是 VARCHAR,但奇怪的是,在进行更改、将其提交到 github,甚至重新启动我的网站后,此错误消息仍然出现。这不再是我的数据库的样子,为什么呢?我已经检查过了,它不能引用另一个数据库(只有这个数据库包含用户名、密码和一个额外的昵称字段,所有这些都在错误消息中引用)

这是我第一次部署网站,所以还有很多不明白的地方。这是我的代码的重要部分:

app = Flask(__name__)
db = SQLAlchemy(app)
migrate = Migrate(app, db)

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), nullable=False, unique=True)
    password = db.Column(db.Text, nullable=False)
    nickname = db.Column(db.String(20), nullable=False)
python database heroku sqlalchemy migrate
1个回答
0
投票

很有可能在您进行更改后,Heroku 确认了更改并重新启动了应用程序,但是数据库架构并未更新。 Alembic 不会自动检测模型中的类型更改。

您需要创建一个脚本来手动更改列类型。

© www.soinside.com 2019 - 2024. All rights reserved.