我在我的Django应用程序中有一组测试用于传递,但在软件演变的某些时候,我开始在运行测试时得到这种消息:
错误:无法刷新数据库test_totomanager_demo.可能的原因:
*数据库未运行或未正确配置.
*至少有一个预期的数据库表不存在.
*SQL无效.
提示:查看'django-admin.py sqlflush'的输出.这是SQL命令无法运行的.
完整错误:(1105,"MyISAM表'video_videoinstallation'正在使用中(最有可能是MERGE表).尝试FLUSH TABLES.")
数据库是MySQL.
此错误开始发生的确切测试是不可预测的.这不是第一次发生,但是经过一两次尝试之后它已经过去了,这次我无法让测试结束.
有关如何避免这种情况的任何提示?
有没有一种简单的方法可以将mysql表转换为redis等效表?
我在MySQL中有一个myisam表,基本上用作键值存储,我想"移动"到Redis,所以它会超级快.是否有捷径可寻?
谢谢.
我有一个MySQL数据库(版本5.5.28),其表格如下:
products (InnoDB)
-------------------------------------------------
search_id title description
1 Levi Blue Jeans Some cool jeans
2 Gucci Handbag Great accessory
3 Prada Dress Beautiful dress
Run Code Online (Sandbox Code Playgroud)
我想在MySQL中做这样的事情:
SELECT MATCH(title) AGAINST ('Jeans') AS score, search_id, FROM search WHERE MATCH(title) AGAINST ('Jeans' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)
据我所知,你只能在MyISAM中做到这一点.是否可以使用InnoDB进行类似的搜索,而无需采取以下措施:
对于我的应用程序(约1000 - 2000条记录),狮身人面像等似乎有点矫枉过正.但是将每个记录放入一个数组并用PHP搜索它似乎也太多了.但也许你不同意.
PS.LIKE对我来说似乎不太好用.结果通常不太准确,你不能用MATCH获得分数.
我有一个问题:我已经用Yii和InnoDB构建了一个大应用程序并且遇到了问题,插入/更新管道确实很长时间,这是我的php报告:
INNODB:admin用户更新55.247464895248秒ekuskov用户更新13.282548904419秒doriwall用户更新0.002094030380249秒
MYISAM:admin用户更新7.8317859172821秒ekuskov用户更新1.6304929256439秒doriwall用户更新0.0020859241485596秒
任何人都可以建议一些解决方案,以加快插入/更新?
编辑----------------------------------------------
现在我使用了一些非常简单的插入循环:
public function run($args) {
$time = -microtime(true);
$begin = DateTime::createFromFormat('Y-m-d H:i:s', '2010-01-01 00:00:00');
$end = DateTime::createFromFormat('Y-m-d H:i:s', '2013-01-01 00:00:00');
$end->add(new DateInterval('P1D'));
$interval = DateInterval::createFromDateString('1 day');
$days = new DatePeriod($begin, $interval, $end);
foreach ( $days as $day ) {
echo "i";
$track = new TimeTracking();
$track->user_id = 25;
$track->date = $day->format('Y-m-d H:i:s');
$track->active = 4;
$track->save(false);
}
$time += microtime(true);
echo count($days)." items insert - $time seconds\n";
}
Run Code Online (Sandbox Code Playgroud)
现在INSERT时间如下:
InnoDB:项目插入 - 72.269570827484秒
MyISAM:项目插入 - 0.87537479400635秒 …
使用syncdb命令创建数据库时如何强制django使用MYISAM存储引擎?这个页面对这个问题没有多大帮助.
MYISAM是完美的选择,因为数据库几乎只用于阅读,MYISAM比InnoDB快得多.模型中仍然存在一些models.ForeignKey字段,但它们仅用于创建主详细信息管理页面.不需要在数据库中具有实际的外键.
在什么条件下应该使用InnoDB而不是MyISAM?我见过一些MySQL优化测试,其中MyISAM被证明更快.我的所有表都是MyISAM,为什么要切换到InnoDB?
我对这个主题进行了一些搜索并找到了一些结果.但是,我正在寻找是否有人知道或可能指向一些真实或有信誉的案例研究,详细说明从MyISAM迁移到InnoDB的好处(特别是性能).
很好,如果你能指出任何关于MySQL版本5.5及以上,其中InnoDb作为默认存储引擎.
我的数据库目前正在使用InnoDB引擎.现在我想添加全文搜索功能,这就是我想将表格转换为MyISAM的原因.但这样做会破坏所有外键.如何安全地将我的表引擎更改为MyISAM?
将表格更改为MyISAM引擎后,如何使用SELECT ... JOIN?
ALTER TABLE jobs ENGINE = MyISAM;
Cannot delete or update a parent row: a foreign key constraint fails
Run Code Online (Sandbox Code Playgroud) 无论引擎如何(例如InnoDB或MyISAM),这种"比较和交换"语句是否始终是原子的?:
UPDATE tbl_name SET locked=1 WHERE id=ID AND locked <> 1;
Run Code Online (Sandbox Code Playgroud)
我问这个是因为我打算使用这个语句进行与事务和非事务数据库表兼容的伪行级锁定.
这是MyISAM推荐的方法,但我不确定这是否适用于InnoDB,因为文档建议使用事务.
我是MySQL数据库的新手.我一再看到MySQL的一个错误,说该表被标记为崩溃,应该修复.但是,我可以使用命令myisamchk修复崩溃的表.顺便说一句,我在MySQL中使用MYISAM数据库引擎.
我只是想知道在什么情况下数据库表崩溃以及如何防止它再次发生?
我使用mysqltcl库(3.0)从Tcl(8.5)脚本连接到MySQL(5.0)数据库.