所以我认为我在使用 Joomla 的组件时遇到了问题,因为我没有使用 InnoDB 引擎的数据库设置。我认为这是因为我在 MySQL 的运行中没有改变任何东西,并且相信 MyISAM 是默认的。有没有办法首先检查这个?
其次,如果我认为是真的,有没有人知道将数据库从一个引擎转换为另一个引擎的任何好的资源/指南?我找到了一些,但赶紧指出我是一个庞大的 SQL 初学者,事实证明这有点像火的洗礼。到目前为止,我看过的指南在他们的方法上都有些不同,而且很多命令都集中在一起,这使得弄清楚发生了什么有些棘手。最大的好处是这个服务器是虚拟的,我已经拍了一堆快照,所以任何错误都不是主要的。
我在 Ubuntu 9.10 x64、Apache 2.2.12、MySQL 5.1.37 和 PHP 版本 5.2.10-2 上使用 Lamp 堆栈
小智 7
回答你的问题的第一部分。确定默认存储引擎的最快方法是发出以下命令;
$mysql -h localhost -u user -p -e "SHOW ENGINES"
Run Code Online (Sandbox Code Playgroud)
这将导致您连接到的数据库服务器启用的支持引擎列表。默认的将有“Support DEFAULT”指示哪个引擎被配置为服务默认引擎。
关于你问题的第二部分。有多种方法可以做到这一点。第一种方法是使用SQL,所以你可以发出;
ALTER TABLE mytable ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)
这可能有许多缺点。如果您的桌子也很大,则需要一些时间。有关更多信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/alter-table.html。但如果它是一种快速而肮脏的方法,那就没问题了。
另一种选择是使用 mysqldump 转储所有 MyISAM 数据库。然后,您可以使用查找替换更改生成的 SQL 转储;
sed -i 's/MyISAM/INNODB/g' file.sql
Run Code Online (Sandbox Code Playgroud)
但是,就像 Patkos 建议的那样,我只会转储 create 语法,然后创建一个新的 db,但将该模式的默认引擎设置为 Innodb 并重新导入数据
| 归档时间: |
|
| 查看次数: |
6472 次 |
| 最近记录: |