最近买了个新vps 自带的php环境 安了个博客系统
诡异的是安完后使用正常 data目录下的数据库文件只要表结构文件frm文件...甚是不解 钻研过后知道
mysql的默认数据库引擎模式呗设置成了InnoDB
innodb表没有没有MYD和.MYI,其数据文件对应于ibdata1文件中
要让.myd和.myi的数据库文件也出现,则转换表类型innodb为myisam.
解决方法:
Sql中InnoDB类型转换为MyISAM命令
ALTER TABLE 表名 TYPE= MyISAM;
连编码一起转
ALTER TABLE 表名 Type=MyISAM CHARACTER SET utf8;
下面提供一个数据库批量转换PHP代码
一个php脚本,没有错误检查,谨慎使用,最好使用前先备份!
,保存成zhuanhuan.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php //连接数据库 $host='localhost'; $user='mysql_username'; //管理账户 $passwd='mysql_password'; //密码 $db='wordpressdb'; //数据库名称 $link= mysql_connect($host,$user,$passwd); if (!$link) { die('Could not connect: '.mysql_error() ); } mysql_select_db( $db,$link ) or die ('can\'t use'. $db . mysql_error()); $result=mysql_query("show tables ") or die( mysql_error()); while($row=mysql_fetch_row($result)){ #echo $row[0]; #var_dump($row); echo "$row[0] \n"; mysql_query("alter table $row[0] type='MYISAM'") or die (mysql_error()); } #var_dump($result); mysql_close($link); ?> |
上传到网站根目录....访问即可完成批量转换http://www.skyfox.org/zhuanhuan.php
-----------------------------------------------------------------
在建表的时候可以指定引擎,也可以指定默认的引擎
在linux my.cnf 中window下的 my.ini 找到
default-storage-engine,如果有
没有就直接加入
default-storage-engine=MYISAM
就可以了