mysql升级后有些数据表打不开报错 1146

这个问题的根源在于,在 MySQL 中,数据库和表其实就是数据目录下的目录和文件,因而,操作系统的敏感性决定数据库和表命名的大小写敏感。
这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix/Linux 系统中是大小写敏感的。
MySQL大小写敏感可以通过配置文件的lower_case_table_names参数来控制。
WINDOWS:
编辑MySQL安装目录下的my.ini 文件,在[mysqld]节下 添加 lower_case_table_names=0 (备注:为0时大小写敏感,为1时大小写不敏感,默认为1),可以实现MySql按照建表Sql语句的大小写状态来定义表名。
LINUX:

编辑/etc/my.cnf文件,在[mysqld]节下 添加 lower_case_table_names=1 参数,并设置相应的值 (备注:为0时大小写敏感,为1时大小写不敏感,默认为0)。

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

直接拷贝数据库导致提示表不存在的解决方法

电脑重装系统后把原来的mysql data复制进去后大部分表是可以访问的,但是有几个表提示表不存在:

  1. error: 1146: Table 'a_content' doesn't exist

这种情况就是要把原来mysql安装目录data里的 ibdata1 也要拷贝过去

INNODB是MYSQL数据库一种流行的数据库引擎,支持事务(行级),在企业级应用上成为可能

ibdata用来储存文件的数据,而库名的文件夹里面的那些表文件只是结构而已,由于新版的mysql默认试innodb,所以ibdata1文件默认就存在了,少了这个文件有的数据表就会出错。

如果是数据表损坏请尝试修复表:

  1. repair table tablename
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Mysql常见错误提示及解决方法

130 :文件格式不正确。(还不是很清楚错误的状况)145  :文件无法打开。1005:创建表失败。1006:创建数据库失败。1007:数据库已存在,创建数据库失败。1008:数据库不存在,删除数据库失败。1009:不能删除数据库文件导致删除数据库失败。1010:不能删除数据目录导致删除数据库失败。1011:删除数据库文件失败。1012:不能读取系统表中的记录。1016:文件无法打开,使用后台修复或者使用 phpmyadmin 进行修复。Quote:开始=>所有程序=>附件=>命令提示符  输入 mysql 所在硬盘盘符    cd mysql 所在目录    cd bin  输入 myisamchk -f D:usr/local/mysql/data/bbs/PW_members.MYI  ps : D:usr/local/mysql/data/bbs 是你论坛数据库的路径    -f 根据具体情况选择,一般也可以选择 -r     注意你的 系统C盘或放数据库的硬盘空间是否足够,一般小于 1G 很容易出现错误。 或用mysqlcheck命令进行修复。具体的方法:利用命令行进入mysql/bin目录,执行mysqlcheck -o -r phpwind -uroot -p                                                      其中phpwind是你数据库的名称,root是你的数据库用户名,然后会提示你输入密码。然后就会修复你的数据库。1017:服务器非法关机,导致该文件损坏。1020:记录已被其他用户修改。1021:硬盘剩余空间不足,请加大硬盘可用空间。1022:关键字重复,更改记录失败。1023:关闭时发生错误。1024:读文件错误。1025:更改名字时发生错误。1026:写文件错误。1030:可能是服务器不稳定。(具体原因不是很清楚)1032:记录不存在。1036:数据表是只读的,不能对它进行修改。1037:系统内存不足,请重启数据库或重启服务器。1038:用于排序的内存不足,请增大排序缓冲区。1040:已到达数据库的最大连接数,请加大数据库可用连接数。Quote:在my.ini 修改max_connections=100为max_connections=1000或更大,重启mysql1041:系统内存不足。1042:无效的主机名。1043:无效连接。1044:数据库用户权限不足,请联系空间商解决。1045:数据库服务器/数据库用户名/数据库名/数据库密码错误,请联系空间商检查帐户。Quote:方法:确保论坛data目录下的sql_config.php用户名与密码都正确.如果用户忘记了数据库的密码,可以按如下方式进行密码的修改:如果 MySQL 正在运行,首先停止。启动 MySQL :bin/safe_mysqld --skip-grant-tables & 就可以不需要密码就进入 MySQL 了。然后就是 >use mysql>update user set password=password("new_pass") where user="root";>flush privileges;1046:没有选择数据库。1048:字段不能为空。1049:数据库不存在。1050:数据表已存在。1051:数据表不存在。1054:字段不存在,自行建立字段。1060:字段重复,导致无法插入这个字段。1062:字段值重复,入库失败 Quote:  1.如果出类似主码为"65535"的错误,可以查看相关表的自增字段,将字段值改在就可以  2.确保相关数据表中主码重复的字段是否存在,如果存在删除这条记录  3.备份数据库,修复相关表(注:这种情况比较常见,如pw_posts表,对表进行修复的时候不要忘记备份).1064:MySQL 不支持错误提示中的编码。1065:无效的 SQL 语句,SQL 语句为空。1067:MySQL 版本为 5,不支持空的默认值。1081:不能建立 Socket 连接。1114:数据表已满,不能容纳任何记录。1115:设置的字符集在 MySQL 并没有支持。1116:打开的数据表太多。1129:数据库出现异常,请重启数据库。1130:连接数据库失败,没有连接数据库的权限。1133:数据库用户不存在。1135:可能是内存不足够,请联系空间商解决。1141:当前用户无权访问数据库。1142:当前用户无权访问数据表。1143:当前用户无权访问数据表中的字段。1146:数据表缺失,请恢复备份数据1147:未定义用户对数据表的访问权限。1149:SQL 语句语法错误。1158:网络错误,出现读错误,请检查网络连接状况。1159:网络错误,读超时,请检查网络连接状况。1160:网络错误,出现写错误,请检查网络连接状况。1161:网络错误,写超时,请检查网络连接状况。1169:字段值重复,更新记录失败。1177:打开数据表失败。1180:提交事务失败。1181:回滚事务失败。1193:不支持字符集限定(SET NAMES)。1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库。1205:加锁超时。1211:当前用户没有创建用户的权限。1216:外键约束检查失败,更新子表记录失败。1217:外键约束检查失败,删除或修改主表记录失败。1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器。1227:权限不足,您无权进行此操作。1235:MySQL版本过低,不具有本功能。1250:客户端不支持服务器要求的认证协议,请考虑升级客户端。1251:Client 不能支持 authentication protocol 的要求Client does not support authentication protocol requested by server; consider upgrading MySQL clientQuote:方法1:mysql> SET PASSWORD FOR -> ' some_user '@' some_host ' = OLD_PASSWORD(' newpwd '); 结合我们的实际情况,在 MySQL Command Line Client 下运行: set password for root@localhost = old_password('123456');方法2:mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')    -> WHERE Host = 'some_host' AND User = 'some_user';mysql> FLUSH PRIVILEGES;上面红色的部分请按自己实际情况修改。1267:不合法的混合字符集。2002:服务器端口不对,请咨询空间商正确的端口。2003:MySQL 服务没有启动,请启动该服务。2008:MySQL client ran out of memory错误指向了MySQL客户mysql。这个错误的原因很简单,客户没有足够的内存存储全部结果。2013:远程连接数据库是有时会有这个问题,MySQL 服务器在执行一条 SQL 语句的时候失去了连接造成的。10048:Quote:建议在my.ini文件中修改最大连接数,  把 mysql_connect() 方法都改成了 mysql_pconnect() 方法.  要修改mysql_pconnect(),可以在论坛的data目录的sql_config.php中  $pconnect = 0; //是否持久连接  修改成$pconnect = 1;  开启防刷新,严禁刷新太快.10055:没有缓存空间可利用Quote:查看下你的C盘空间是否已经满,清除一些没有用的文件.  可以在后台的"论坛核心设置","核心功能设置"里"进程优化"开启,"GZIP 压缩输出"关闭.查找了一下10055(没有缓存空间可利用)出错的原因,分析了my.ini的配制文件,在my.ini中如下:default-storage-engine=INNODBinnodb_additional_mem_pool_size=2Minnodb_flush_log_at_trx_commit=1innodb_log_buffer_size=1Minnodb_buffer_pool_size=10Minnodb_log_file_size=10Minnodb_thread_concurrency=8觉得可以把innodb_buffer_pool_size=10M 加大如100M或是1000M以上是对mysql5的如果是mysql4可以在my.ini中增加如下:#innodb_data_file_path = ibdata1:2000M;ibdata2:2000M#innodb_data_home_dir = c:ibdata#innodb_log_group_home_dir = c:iblogs#innodb_log_arch_dir = c:iblogs#set-variable = innodb_mirrored_log_groups=1#set-variable = innodb_log_files_in_group=3#set-variable = innodb_log_file_size=5M#set-variable = innodb_log_buffer_size=8M#innodb_flush_log_at_trx_commit=1#innodb_log_archive=0#set-variable = innodb_buffer_pool_size=16M#set-variable = innodb_additional_mem_pool_size=2M#set-variable = innodb_file_io_threads=4#set-variable = innodb_lock_wait_timeout=50把前面的#去了10061: Quote:启动这台机器上的MySQL服务   如服务启动失败  一定是你的my.ini文件出了差错,  MySQL服务不能正常启动   你删除了它后,MySQL就会按其默认配置运行,  那就没有问题了以上资料根据网上各方面资料整合而成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常空间文件已经丢失或者损坏了,导致 MySQL 无法加载这个。有以下几种可能的原因: 1. 数据库文件损坏:如果你的数据库文件已经损坏,可能会导致空间文件丢失。 2. 删除了空间文件:如果你或其他人不小心删除了空间文件,可能会导致这个错误。 3. 数据库版本升级:如果你升级MySQL 数据库版本,可能会导致空间文件无法加载。 针对这种情况,你可以尝试以下方法来解决: 1. 从备份中恢复:如果你有备份,可以尝试从备份中恢复。首先,你需要确定什么时候消失的,然后找到最近的备份。将备份文件还原到 MySQL 数据库中,然后尝试访问。 2. 使用 innodb_force_recovery:如果你无法从备份中恢复,可以尝试使用innodb_force_recovery参数来尝试恢复。此参数将允许你尝试从损坏的空间文件中恢复数据。但是,这个方法并不总是成功,而且可能会导致数据丢失。 3. 重新创建:如果你无法恢复,可以尝试重新创建。但是,在重新创建之前,你需要删除所有旧的空间文件。你可以使用以下命令删除空间文件: ``` ALTER TABLE table_name DISCARD TABLESPACE; ``` 然后,重新创建空间文件并重新加载: ``` CREATE TABLESPACE tablespace_name ADD DATAFILE 'tablespace_file_name.ibd'; ALTER TABLE table_name IMPORT TABLESPACE; ``` 如果你还是无法解决问题,建议你联系 MySQL 官方支持或者专业的数据库管理员寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值