在我在zend框架中创建的Web应用程序中,我正在为每个注册的新客户端创建一个新数据库。这个查询当然是相当繁重和耗时的,因为我们需要创建一个数据库,创建一些10个表并在表中放置一些数据。
我们正在使用一个我们读入的大型SQL文件和exec()。
在那些查询之后,在ZF中使用另一个mysql连接,我需要在上一步中创建的其中一个表中插入一条新记录。
这是它失败的地方:当第一个查询尚未完成并且我尝试在正在创建的表中插入数据时,我收到错误“表xxxx不存在”。
所有这些都发生在几分之一秒内,但我无法找到“等待”第一个大型查询完成的方法。
在第二个语句之前发出sleep(2)命令解决了这个问题,但这并不是我们想玩的方式。
此外,我们不能使用事务,因为我们使用的是CREATE DATABASE和其他不能用于事务的语句。
答案 0 :(得分:3)
每个客户端的一个数据库是一群蠕虫,你几乎肯定想要在它失控之前消除它们。使用每个表中带有client_id字段的单个数据库来指示记录所属的客户端。 (这意味着添加了一个新表来保存客户端记录本身。)