我们有一个运行此控制台命令的php脚本
cat import.sql | mysql -u user -ppassword
所以它只是将文件导入数据库
文件很大~120 mb
但它只包含插入/替换查询 喜欢这个:
/*!40000 ALTER TABLE `actionList` DISABLE KEYS */;
REPLACE INTO `actionList` VALUES (1,'buttonClick','Click on a button'),(2,'buttonClose','Click on the close button');
/*!40000 ALTER TABLE `actionList` ENABLE KEYS */;
我从代码中删除了锁表。
现在,当这个脚本运行时,我的其他页面无法加载,直到此脚本完成。
为什么会发生这种情况?
答案 0 :(得分:0)
使用不同的密码进行导入,不要以root用户身份导入。
您也可以限制用户:
mysql> CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank';
mysql> GRANT ALL ON customer.* TO 'francis'@'localhost'
-> WITH MAX_QUERIES_PER_HOUR 20
-> MAX_UPDATES_PER_HOUR 10
-> MAX_CONNECTIONS_PER_HOUR 5
-> MAX_USER_CONNECTIONS 2;
了解更多信息: http://dev.mysql.com/doc/refman/5.0/en/user-resources.html
答案 1 :(得分:0)
这不是数据库锁,而是会话锁。
当我们运行脚本时,它花了很多时间,并且会话已打开,因此其他页面尝试使用会话但不能。
所以我补充道:
session_write_close();
它解决了这个问题。