数据库1146
‘壹’ Mysql Errno : 1146如何解决
mysql--1146--报错
先找到数据库存放地址,即Data文件夹(复制留下来)
再用电脑管家把所有的mysql卸载
然后把mysql文件夹弄走(卸载不会清掉它,需手动,一般在C:\ProgramData下)(可删除,或剪切走,以防万一)
重新安装mysql(我用的是mysql-installer-community-5.7.13.0程序包)
如果数据库启动了先关闭它(因为版本,关闭是(net stop mysql57--在cmd中);启动是(net start mysql57--在cmd中))
然后把以前的数据库文件(自己需要的)(在Data文件夹下的,数据库名即文件夹名)复制到,新的数据库Data文件夹下(那些自带的数据库别动),
把新的Data下的那五个配置文件替换为以前老的文件(就是这五个文件auto.cnf,ib_buffer_pool,ib_logfile0,ib_logfile1,ibdata1)
重新启动数据库即可
‘贰’ SQL Error:1146,SQLState:42S02 异常怎么解决
编辑MySQL安装目录下的my.ini文件,在[mysqld]节下 添加 lower_case_table_names=1
‘叁’ mysql 自己创建的数据库 1146(42s02)
1、你创建的data_parts数据库,但没有在这个库创建user表
2、所以你在use data_pats;后,select host,user from user;会报错
3、而你在use mysql 后不报表,是因为mysql库中,存在user表
‘肆’ mysql 错误 SQL Error: 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中1146错误,提示表不存在,是本地数据库不是从别的机器复制过来的。
1,查询的数据库选择是否正确;
2,表名有限制字符,这种情况可以在表名前后加``,不是单引号,Tab键上面,数字键1左边那个键;
‘陆’ 我把linux下的mysql文件夹拷贝了下来,想在另一台linux下的mysql上恢复数据,多个数据库文件,出现1146错误
项目上 MySQL还原 SQL 备份经常会碰到一个错误如下,且通常出现在导入视图、函数、存储过程、事件等对象时,其根本原因就是因为导入时所用账号并不具有SUPER 权限,所以无法创建其他账号的所属对象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for this operation常见场景:1. 还原 RDS 时经常出现,因为 RDS 不提供 SUPER 权限;2. 由开发库还原到项目现场,账号权限等有所不同。
处理方式:
1. 在原库中批量修改对象所有者为导入账号或修改SQL SECURITY为Invoker;2. 使用 mysqlmp 导出备份,然后将 SQL 文件中的对象所有者替换为导入账号。
二、问题原因我们先来看下为啥会出现这个报错,那就得说下 MySQL 中一个很特别的权限控制机制,像视图、函数、存储过程、触发器等这些数据对象会存在一个DEFINER和一个SQL SECURITY的属性,如下所示:
--视图定义CREATEALGORITHM=UNDEFINEDDEFINER=`root`@`%`SQLSECURITYDEFINERVIEWv_test
--函数定义CREATEDEFINER=`root`@`%`FUNCTION`f_test()`RETURNSvarchar(100)SQLSECURITYDEFINER
--存储过程定义CREATEDEFINER=`root`@`%`PROCEDURE`p_test`()SQLSECURITYDEFINER
--触发器定义CREATE DEFINER=`root`@`%` trigger t_test
--事件定义CREATE DEFINER=`root`@`%` EVENT `e_test`
DEFINER:对象定义者,在创建对象时可以手动指定用户,不指定的话默认为当前连接用户;
SQL SECURITY:指明以谁的权限来执行该对象,有两个选项,一个为DEFINER,一个为INVOKER,默认情况下系统指定为 DEFINER;DEFINER:表示按定义者的权限来执行;INVOKER:表示按调用者的权限来执行。
如果导入账号具有 SUPER 权限,即使对象的所有者账号不存在,也可以导入成功,但是在查询对象时,如果对象的SQL SECURITY为DEFINER,则会报账号不存在的报错。ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist
改写好处:1. 可以避免还原时遇到 DEFINER 报错相关问题;2. 根据输出信息知道备份是否正常进行,防止备份中遇到元数据锁无法获取然后一直卡住的情况。

‘柒’ 使用navicat连接数据库时显示1146-table 'mysql.proc' doesn't exist,这个怎么解决
一、数据库的系统表丢失了。
考虑以下几种处理方式:
a. 从其它相同版本的mysql数据库导出个proc的数据通过命令行导入进去;
b. 或者拷贝下data/mysql/proc.frm, proc.MYD, proc.MYI 三个文件到你的数据库data/mysql/ 目录下,重启数据库;
c. 如果之前有数据库备份,提取出其中的mysql.proc表来导入。
二、如果是从其它环境导入或拷贝的,数据库的存储过程会受影响,需重建所有数据库下的存储过程。
‘捌’ SQL Error:1146,SQLState:42S02 异常怎么解决
这个问题的根源在于,在 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出现1146错误
数据库mm里面不存在表sun_style,你说表存在,请检查是属于哪个数据库。
‘拾’ mysql 数据库 提示错误error 1146 谢谢
你是不是升级过mysql或者删除过此表?我怀疑此表结构损坏.
解决方案:
1)重启mysql
2)如果现象依旧,请尝试repaire
table
wp_xxxx表名,
3)如果还不能解决,退出命令行客户端,在mysql安装目录下的bin下
使用mysqlcheck
-r
数据库名
表名
-uuser
-ppass来修复.