mysql的data数据库只有.frm 而.myd和.myi没有,使用正常

时间:2022-03-27 23:12:13

正常 data目录下的数据库文件只要表结构文件frm文件...甚是不解  钻研过后知道

mysql的默认数据库引擎模式呗设置成了InnoDB

innodb表没有没有MYD和.MYI,其数据文件对应于ibdata1文件中

要让.myd和.myi的数据库文件也出现,则转换表类型innodb为myisam.

解决方法:

Sql中InnoDB类型转换为MyISAM命令

ALTER TABLE 表名 engine= MyISAM;

连编码一起转

ALTER TABLE 表名 engine=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] engine='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
就可以了