mysql再次挂起设置表?

时间:2013-06-19 15:02:52

标签: mysql

我有一个python dbsetup.py程序设置我的数据库中的表,然后我运行一些程序 查询和更新数据库。
我面临的问题是:
问题是,当我更改文件的架构时,我再次运行dbsetup.py。(是的,它会转储 旧桌子,但它可以从新鲜开始)。但每当我这样做时,dbsetup.py偶尔会挂起。不仅如此,当我在我的数据库上发出mysql命令时它会挂起,即mysql 光标只是一直闪烁,命令没有完成。我无法解决问题。

每次我必须创建一个新的数据库然后我甚至无法丢弃旧的数据库。这就是我db.setup.py的样子:

from settings import *
import MySQLdb as db

conn = db.connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS,MYSQL_DB) 
cursor = conn.cursor()
try:
    cursor.execute("drop table OJapp_users")
except:
    pass
try:
    cursor.execute("drop table submission")
except:
    pass
try:
    cursor.execute("drop table testcases")
except:
    pass
try:
    cursor.execute("drop table problems")
except:
    pass
cursor.execute("create table problems (pid VARCHAR(255)  PRIMARY KEY NOT NULL, score INT NOT NULL,checker VARCHAR(255) NOT NULL)")
cursor.execute("create table testcases (tid INT  AUTO_INCREMENT PRIMARY KEY NOT NULL,inputfile VARCHAR(255) NOT NULL,ouputfile VARCHAR(255) NOT NULL,score INT NOT NULL,memory INT NOT NULL,time INT NOT NULL,pid VARCHAR(255)  NOT NULL,FOREIGN KEY (pid) REFERENCES problems(pid))")
cursor.execute("create table OJapp_users (id INT AUTO_INCREMENT PRIMARY KEY NOT NULL, username VARCHAR(255) NOT NULL, password VARCHAR(255), name VARCHAR(255), email VARCHAR(255) UNIQUE, college VARCHAR(255), country VARCHAR(255))")
cursor.execute("create table submission (sid INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(255), problemid VARCHAR(32), language VARCHAR(16), count INT, time TIMESTAMP, status VARCHAR(255) default 'Queued...', program blob, score INT default 0,FOREIGN KEY (problemid) REFERENCES problems(pid))")
cursor.close()
conn.commit()
conn.close()

知道为什么会这样吗? 对数据库的resrt的查询工作正常。此查询在我的数据库上的其他表上工作正常。仅select * from submission submission表的查询不起作用。 是因为它是我数据库中当前唯一的动态表,它还将程序存储为blobs,这会占用太多内存(但我只插入了大约7条记录)。
想不通

0 个答案:

没有答案