当前位置:首页 » 操作系统 » 数据库1146

数据库1146

发布时间: 2022-11-12 22:30:49

‘壹’ 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来修复.

热点内容
随机启动脚本 发布:2025-07-05 16:10:30 浏览:514
微博数据库设计 发布:2025-07-05 15:30:55 浏览:18
linux485 发布:2025-07-05 14:38:28 浏览:298
php用的软件 发布:2025-07-05 14:06:22 浏览:747
没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:421
javaweb开发教程视频教程 发布:2025-07-05 13:24:41 浏览:675
康师傅控流脚本破解 发布:2025-07-05 13:17:27 浏览:229
java的开发流程 发布:2025-07-05 12:45:11 浏览:673
怎么看内存卡配置 发布:2025-07-05 12:29:19 浏览:274
访问学者英文个人简历 发布:2025-07-05 12:29:17 浏览:824