问题:生产环境查询时报错:sqlalchemy.exc.DatabaseError: (dmPython.DatabaseError) [CODE:-608]请求执行超时
解决:因为两表查询,查询条件中有in,所以导致查询超时,但在开发环境不会出现这问题,不知道是不是达梦数据库版本问题,解决方法,将两表查询改成两个查询
问题:生产环境查询时报错:sqlalchemy.exc.DatabaseError: (dmPython.DatabaseError) [CODE:-608]请求执行超时
解决:因为两表查询,查询条件中有in,所以导致查询超时,但在开发环境不会出现这问题,不知道是不是达梦数据库版本问题,解决方法,将两表查询改成两个查询
问题:使用达梦管理工具删除表时报锁超时
解决:删除涉及的session
方法:
1、查询所有session
select * from v$sessions;
2、根据结果,找到相应的sess_id,然后删除此session
SP_CLOSE_SESSION(140359600702024);
拓展:
1、导入数据时,一直卡着不动,可能只是因为锁住了
2、程序中一条sql语句,在开发环境可以正常运行,但在生产环境,运行多次后会报错sqlalchemy.exc.DatabaseError: (dmPython.DatabaseError) [CODE:-608]请求执行超时,也可能是因为此sql语句被锁住了
问题:达梦库,sqlalchemy中非主键使用自增时,会报错
解决:在sqlalchemy中指定自增列为主键
方法:
class User(Base, BaseMixin):
__tablename__ = "YH"
# 使用mysql时,BH字段可以使用unique=True代替primary_key=True,
# 但达梦必须指定为primary_key=True,但建表时此字段还是唯一索引
BH = Column(Integer, primary_key=True, autoincrement=True)
BM = Column(String(19), nullable=False, primary_key=True)
问题:按名称排序,如果名称是数字时,10比2排在前面
解决:order by 时name+1
方法:
select * from classes order by name+1 asc, id asc limit 0, 10;
注:增加“id asc”是因为防止order by和limit一起使用时出错排序错乱
问题:sqlalchemy新增数据到达梦,使用了synonym,使用了db.flush,但出现了代码新增的数据id与数据库新增的id不一致,导致新增数据完查询失败,报错:sqlalchemy.orm.exc.ObjectDeletedError: Instance '<College at 0x7fc16c5490d0>' has been deleted, or its row is otherwise not present
解决:直接删表,重新创建表,清除缓存可以使用db.refresh()代替db.flush()