遇见问题
发现问题:通过sqlalchemy更改数据库时,python manage.py db upgrade一直不动;在命令行使用select * form user没有反应。
推测user表锁住了。
验证问题
百度,MySQL表锁住了的解决方案,也是验证是否是表锁住了的问题。
查看在用的表
show OPEN TABLES where In_use > 0;
现在图片中是没有显示有表在用的(这是正常情况,如果有表锁住的话,会显示哪个个数据库,哪张表,in_use=1)
查看进程号
show processlist;
这里会显示阻塞的进程,也就是你未执行完成的SQL命令。
如果有阻塞情况的话:会有Waiting for table metadata lock,在这之后会显示未执行完成的sql命令。
举例: | 10664505 | root | ip:port | tables | Query | 5074 | Waiting for table metadata lock | ALTER TABLE tables drop column column 这里是删除表的某一列的命令。
10664505 是这个阻塞进程的进程号。
解决问题
解决表锁住的问题
将阻塞的任务进程kill掉: kill 110664505;
然后再使用 select * from user\G发现能正常的打印用户信息了。
希望对你有所帮助!