mysql Non-Transactional Database Only(只支持MyISAM)_Mysql

后来在做WordPress,一开始还不知道原来WordPress用的是InnoDB数据引擎,于是在原来的数据库里面就建了一个数据库,一开始也没发觉问题,安装,导入sql,都没问题,当时也没多想。直到这几天因为又要装多一个WordPress,用phpmyadmin访问数据库多一点,问题来了。老是一访问WordPress的数据库,就弹出错误提示“Mysqld-nt.exe应用程序错误:“0x005346c4”指令引用的“0x00786000”内存,该内存不能为读...”,然后就MySQL服务也停了,登陆不了,整个数据库都访问不了。

图1 设置数据库类型

纠结了挺久,也忘了是看到什么文章触发了灵感,反正后来才知道原来是数据引擎不同惹的祸。于是就想到重新运行次设置向导,把数据库类型改成支持InnoDB引擎的。马上行动,在向导里设置数据库类型(也就是图1的database usage)那里,设置成第二项,还在后面的InnoDB Tablespace Settings里把InnoDB数据文件设置放在D:\MySQL InnoDB Datafiles目录里。但是在最后execute执行的时候,却老是在Start Service那里出问题,如下图2。

图2 Start service出错

想直接到services.msc里面启动服务,也不行。错误提示内容为:“在 本地计算机 无法启动mysql服务 错误1067:进程意外中止。

按照网上的某些做法,卸载了MySQL服务,也没重启就重新设置,问题如故;把服务卸载了,重启后再重新设置,则是启动服务成功,但是在后面的Applying Security Settings的时候有新的问题,如下图3。图2那里的错误提示则变成“ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)", 说明MySQL还是没有启动,或者启动过,出错又关了。

图3

顺便提一下,在MySQL5里(其他版本的我不知道)每运行一次设置向导,只要按了execute执行,都会在MySQL5的安装目录下自动生成一个原来的MySQL的设置文件my.ini的备份bak文件。并且将以修改的时间命名。因此如果设置出了问题,可以从备份文件恢复。

后来还是在错误日志里找到思路。错误日志就是放在 MySQL5安装目录\Data 目录里的那个以你的计算机名命名的.err文件。

首先我找到以下一段:

InnoDB: Error: log file .\ib_logfile0 is of different size 0 52428800 bytes

InnoDB: than specified in the .cnf file 0 10485760 bytes!

101001 9:47:42 [ERROR] Default storage engine (InnoDB) is not available

101001 9:47:42 [ERROR] Aborting

101001 9:47:42 [Note] D:\MySQL5\bin\mysqld-nt: Shutdown complete

于是就到“MySQL5安装目录\Data ”目录里把ib_logfile0日志文件删掉,重启MySQL服务,还是提示10067错误。再去查看err文件。

101001 18:39:29 InnoDB: Log file .\ib_logfile0 did not exist: new to be created

InnoDB: Setting log file .\ib_logfile0 size to 109 MB

InnoDB: Database physically writes the file full: wait...

InnoDB: Progress in MB: 100

InnoDB: Error: log file .\ib_logfile1 is of different size 0 52428800 bytes

InnoDB: than specified in the .cnf file 0 114294784 bytes!

101001 18:39:30 [ERROR] Default storage engine (InnoDB) is not available

101001 18:39:30 [ERROR] Aborting

101001 18:39:30 [Note] D:\MySQL5\bin\mysqld-nt: Shutdown complete

可以看到,ib_logfile0的问题解决了,但是同样的问题却出在ib_logfile1上面了。于是依样画葫芦,把ib_logfile1删了,再重启MySQL服务,却发现没用。难道是还要重启系统。果真,把前面两个ib_logfile删了,重启系统就搞定了。前面的可能是因为刚开机,所以也行。实际上是需要重启系统的。这时的日志如下

101001 19:19:24 InnoDB: Log file .\ib_logfile0 did not exist: new to be created

InnoDB: Setting log file .\ib_logfile0 size to 109 MB

InnoDB: Database physically writes the file full: wait...

InnoDB: Progress in MB: 100

101001 19:19:26 InnoDB: Log file .\ib_logfile1 did not exist: new to be created

InnoDB: Setting log file .\ib_logfile1 size to 109 MB

InnoDB: Database physically writes the file full: wait...

InnoDB: Progress in MB: 100

InnoDB: Cannot initialize created log files because

InnoDB: data files are corrupt, or new data files were

InnoDB: created when the database was started previous

InnoDB: time but the database was not shut down

InnoDB: normally after that.

101001 19:19:27 [ERROR] Default storage engine (InnoDB) is not available

101001 19:19:27 [ERROR] Aborting

101001 19:19:27 [Note] D:\MySQL5\bin\mysqld-nt: Shutdown complete

好了,现在只剩下最后一个问题了Default storage engine (InnoDB) is not available。去services.msc里面启动MySQL服务,还是出错。但是日志却是显示

InnoDB: No valid checkpoint found.

InnoDB: If this error appears when you are creating an InnoDB database,

InnoDB: the problem may be that during an earlier attempt you managed

InnoDB: to create the InnoDB data files, but log file creation failed.

InnoDB: If that is the case, please refer to

InnoDB: http://dev.mysql.com/doc/mysql/en/Error_creating_InnoDB.html

101001 20:45:09 [ERROR] Default storage engine (InnoDB) is not available

101001 20:45:09 [ERROR] Aborting

101001 20:45:09 [Note] D:\MySQL5\bin\mysqld-nt: Shutdown complete

于是去网上搜索了一下,发现提示No valid checkpoint found.的解决办法:删除所有现有的ibdataN和ib_logfileN文件后,重启Mysql。于是照做,果然行了。

InnoDB: The first specified data file D:\MySQL InnoDB Datafiles\ibdata1 did not exist:

InnoDB: a new database to be created!

101001 21:04:24 InnoDB: Setting file D:\MySQL InnoDB Datafiles\ibdata1 size to 10 MB

InnoDB: Database physically writes the file full: wait...

101001 21:04:25 InnoDB: Log file .\ib_logfile0 did not exist: new to be created

InnoDB: Setting log file .\ib_logfile0 size to 109 MB

InnoDB: Database physically writes the file full: wait...

InnoDB: Progress in MB: 100

101001 21:04:27 InnoDB: Log file .\ib_logfile1 did not exist: new to be created

InnoDB: Setting log file .\ib_logfile1 size to 109 MB

InnoDB: Database physically writes the file full: wait...

InnoDB: Progress in MB: 100

InnoDB: Doublewrite buffer not found: creating new

InnoDB: Doublewrite buffer created

InnoDB: Creating foreign key constraint system tables

InnoDB: Foreign key constraint system tables created

101001 21:04:31 InnoDB: Started; log sequence number 0 0

101001 21:04:32 [Note] D:\MySQL5\bin\mysqld-nt: ready for connections.

Version: '5.0.18-nt' socket: '' port: 3306 MySQL Community Edition (GPL)

奋斗了一天,总算成功地把MySQL从MyISAM转换成InnoDB引擎了。也学会了读懂错误日志文件err文件了。不过我就在想了,如果从一开始就按照上面的做,不知道会怎么样呢?
转自 DarkBlue blog

时间: 2024-09-21 13:41:18

mysql Non-Transactional Database Only(只支持MyISAM)_Mysql的相关文章

Windows Azure开发选择MySQL or SQL Database

Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure 目前并没有直接提供 MySQL 的数据库服务,不过却有与 ClearDB 合作提供 MySQL 的数据库服务,或是使用 Windows Azure 虚拟机(Windows Server 或 Linux Server)服务自行建立 MySQL 服务器. 在 PHP 程序中要连接 MySQL 数据库,可以直接使用 mysqli_* (MySQL Improveme

Vista真够绝:只支持SQL Server 2005

近日,根据微软官方网站的一篇文章介绍,在微软的下一代服务器操作系统Lonhorn和微软的Windows Vista中只支持SQL Server 2005 SP2. 微软称,这样做是为了给客户提供更安全的产品.早期版本的SQL Server,包括SQL Server 2000(所有版本,包括企业版.桌面版等).SQL Server 7.0.和SQL Server 6.5等均不再支持. 使用早期版本SQL Server的应用程序的用户,如果想使用新的操作系统,要开始考虑测试和升级到SQL Serve

android手机应用实现音乐一直播放,不支持外放,只支持耳机播放怎么实现?

问题描述 android手机应用实现音乐一直播放,不支持外放,只支持耳机播放怎么实现? 说下可行的思路即可. 我现在有的思路是 当音乐播放时给手机音量设置静音,插入耳机,取消静音,拔掉耳机,恢复静音. 感觉这个想法不太好,如果用户手动音量调节怎么办? 解决方案 你查一下,有没有监听耳机拔插的广播,如果可以,就处理这个广播,根本不同的状态控制你的播放

c#连接mysql数据库字符串database属性值含有特殊符号 “.”怎么转义

问题描述 c#连接mysql数据库字符串database属性值含有特殊符号 "."怎么转义 解决方案 直接改名字吧,换成 _ 解决方案二: 用修饰试试呢或者修改一下密码 解决方案三: 不需要转义的,你直接用就可以的

嵌入式-ucosii只支持64个优先级,创建任务时要给每一个任务分配一个优先级,那么最多只能创建64个任务啦

问题描述 ucosii只支持64个优先级,创建任务时要给每一个任务分配一个优先级,那么最多只能创建64个任务啦 或者说还不到64个,毕竟有ideal等一些系统已经占用的优先级,那么如果项目 比较大的话是不是就难以搞定了呢 解决方案 主进程下在做下一任务 解决方案二: 好像可以到256了.

java-Java问题:Collections中的binarySearch方法只支持字符串元素对吗?

问题描述 Java问题:Collections中的binarySearch方法只支持字符串元素对吗? 图中这个arr对象的元素,有int,double,布尔,String各类型,我都试了下,只有String可以显示出来结果,其他几个都报错,那么我由此得出结论:此方法只针对字符串类型,我这个结论是正确的吗?求证一下,我不想因不正确的测试方法而误导了自己 另外,下面这俩方法有啥区别呢? 解决方案 关键在于类型不一致,第一个能查找不报错是凑巧了,内部是二分查找,所以刚好第一个匹配了,如果类型不匹配,也

iphone-UIImagePickerController只支持竖屏模式

问题描述 UIImagePickerController只支持竖屏模式 根据IOS文档说明,**The UIImagePickerController class supports portrait mode only**,就是UIImagePickerController类只能支持竖屏模式,有没有什么方法能让横屏显示? 解决方案 可以用ALAssetsLibrary 获取设备中的图片,然后像uiimagepicker一样显示为横屏和竖屏 - (void)viewDidLoad { [super

LINQ to Entities 不支持指定的类型成员“CHECK_DATE”。只支持初始值设定项、实体成员和实体导航属性。

问题描述 LINQtoEntities不支持指定的类型成员"CHECK_DATE".只支持初始值设定项.实体成员和实体导航属性.说明:执行当前Web请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.异常详细信息:System.NotSupportedException:LINQtoEntities不支持指定的类型成员"CHECK_DATE".只支持初始值设定项.实体成员和实体导航属性.源错误:行65:varquer

乔布斯:苹果Mac不支持蓝光只支持HDVideo

4月19日消息,据国外媒体报道,一位用户在4月14日向苹果公司CEO史蒂夫·乔布斯(Steve Jobs)提出了关于苹果为Mac系统配置支持高清晰视频播放的蓝光驱动器设备的相关建议.但史蒂夫的当日回信并未使这位读者感到很满意. 据透漏,这位用户在给史蒂夫的信中表示,苹果电脑的Mac系统对于高清视频来说是一个很好的平台,但是由于Mac系统不支持蓝光,所以大家在Mac系统中就无法看到一个更为高清画质的视频.他还向史蒂夫询问,对于为Mac系统配置支持高清晰视频播放的蓝光驱动器设备,苹果公司是否有相关计