这些代码可以在MySQL的错误日志、返回的错误信息或异常处理程序中找到。 sqlstate_value 定义:sqlstate_value 是一个由五个字符组成的字符串,用于表示SQL标准的错误代码。...1045:不能连接数据库,用户名或密码错误。 1048:字段不能为空。 1049:数据库不存在。 1050:数据表已存在。 1051:数据表不存在。 1054:字段不存在。...定义处理程序的几种方法 方法1:捕获SQLSTATE值 DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02' SET @info = 'NO_SUCH_TABLE'...; 这里,处理程序被设置为在SQLSTATE值为’42S02’(表示表或视图不存在)时触发。...1146(也是表示表或视图不存在)。
[HY000] [1049] Unknown database 'blog_test1' blog_test1 表并不存在,所以在 new PDO 的时候就已经直接会抛出异常了。..." var_dump($pdo->errorInfo()); // array(3) { // [0]=> // string(5) "42S02" // [1]=> // int(1146...但其实数据库中并不存在这个表。...[42S02]: Base table or view not found: 1146 Table 'blog_test.aabbcc' doesn't exist 在设置错误处理机制为警告后,PDO...[42S02]: Base table or view not found: 1146 Table 'blog_test.aabbcc' doesn't exist 最后,我们将错误处理机制设置为抛出异常
例如ERROR 1146 (42S02)中,sqlstate_value值是42S02,mysql_error_code值是1146。...【示例14-6】 下面定义"ERROR 1146 (42S02)"这个错误,名称为can_not_find。...可以用两种不同的方法来定义,代码如下: //方法一:使用sqlstate_value DECLARE can_not_find CONDITION FOR SQLSTATE '42S02'...SQLEXCEPTION表示所有没有被SQLWARNING或NOT FOUND捕获的sqlstate_value值。sp_statement表示一些存储过程或函数的执行语句。...第一种方法是捕获sqlstate_value值。如果遇到sqlstate_value值为42S02,执行CONTINUE操作,并且输出"CAN NOT FIND"信息。
例如ERROR 1146 (42S02)中,sqlstate_value值是42S02,mysql_error_code值是1146。...【示例6】 下面定义"ERROR 1146 (42S02)"这个错误,名称为can_not_find。...SQLEXCEPTION表示所有没有被SQLWARNING或NOT FOUND捕获的sqlstate_value值。sp_statement表示一些存储过程或函数的执行语句。...第一种方法是捕获sqlstate_value值。如果遇到sqlstate_value值为42S02,执行CONTINUE操作,并且输出"CAN NOT FIND"信息。 ...SQLEXCEPTION捕获所有没有被SQLWARNING或NOT FOUND捕获的sqlstate_value值,然后执行EXIT操作,并且输出"ERROR"信息。
例如ERROR 1146 (42S02)中,sqlstate_value值是42S02,mysql_error_code值是1146。...【示例14-6】 下面定义"ERROR 1146 (42S02)"这个错误,名称为can_not_find。可以用两种不同的方法来定义,代码如下: 1....SQLEXCEPTION表示所有没有被SQLWARNING或NOT FOUND捕获的sqlstate_value值。sp_statement表示一些存储过程或函数的执行语句。...第一种方法是捕获sqlstate_value值。如果遇到sqlstate_value值为42S02,执行CONTINUE操作,并且输出"CAN NOT FIND"信息。...SQLEXCEPTION捕获所有没有被SQLWARNING或NOT FOUND捕获的sqlstate_value值,然后执行EXIT操作,并且输出"ERROR"信息。
问题描述: 一开发同事在linux下调一个程序老是报错说找不到表,但是登陆mysql,show tables查看明明是已经创建了这张表的!!...(42S02): Table 'haun_db.opHistory' doesn't exist mysql> desc opHistory_queue; ERROR 1146 (42S02): Table...这样设置后,表名在硬盘上以小写保存,MySQL将所有表名转换为小写存储和查找表上。该行为也适合数据库名和表的别名。...也就是说,mysql设置为不分区大小写后,创建库或表时,不管创建时使用大写字母,创建成功后,都是强制以小写保存!...后来运维同事又将mysql改成不分区大小写设置了,此时mysql都是强制以小写保存的表,所以开发后面再次在程序里引用这张表的时候,就会报错说不存在!
[42S02]: Base table or view not found: 1146 Table 'blog_test.tran_innodb2' doesn't exist 假设这两个表需要同时更新...在没有事务的情况下,我们第一条数据是会正常插入成功的,这并不是我们需要的结果。在这时,就需要事务能力的帮助,让我们能够让两个表要么同时成功,要么同时失败。...values ('Joe', 12)"); $pdo->exec("insert into tran_innodb2 (name, age) values ('Joe', 12)"); // 不存在的表...$e->getMessage(), PHP_EOL; // Failed: SQLSTATE[42S02]: Base table or view not found: 1146 Table '...在这里我们需要注意的是,PDO 对象最好指定错误模式为抛出异常,如果不指定错误模式的话,事务中出现的错误也不会直接报错,而是返回错误码,我们需要通过错误码来确定是否提交或回滚。
ERROR 1146 (42S02): Table ‘database.table’ Doesn’t Exist:完美解决方法 摘要 大家好,我是默语!...在今天的技术博客中,我们将探讨 MySQL 数据库中遇到的 ERROR 1146 (42S02): Table 'database.table' doesn't exist 错误。...这通常意味着您尝试访问的表在指定的数据库中不存在。解决这一问题需要对数据库结构和 SQL 语句有深入了解。本文将帮助您理解这个错误的根本原因,并提供有效的解决方案。...正文内容 错误概述 ERROR 1146 (42S02) 错误表示 MySQL 数据库中缺少指定的表。这可能是由于表名错误、表未创建或表已被删除等原因造成的。...表格总结 技术点 描述 ERROR 1146 (42S02) 错误 表 database.table 在指定的数据库中不存在。
(1) INSERT 语句:用于向已经存在的表或视图中插入新的数据。(2) SELECT 语句:用于查询表或视图中的数据。(3) UPDATE 语句:用于更新表或视图中的数据。...(4) DELETE 语句:用于删除表或视图中的数据。3.数据控制语言数据控制语言( Data Control Language , DCL )用于安全管理,确定哪些用户可以查或修改数据库中的数据。...解决办法:student表上的触发器里 不能再更新(insert、update、delete)student表,只能操作其他表。...例如 ERROR 1146(42S02) 中,下面定义“error 1089 (HU123)”这个错误,名称为 can_not_find。...下面是定义处理程序的几种方式,代码如下://方法一:捕获 sqlstate_valuedeclare continue handler for sqlstate '42s02' set @info='can
) 消息:对于'%s',视图'%s'不存在。...· 错误:1072 SQLSTATE: 42000 (ER_KEY_COLUMN_DOES_NOT_EXITS) 消息:键列'%s'在表中不存在。...· 错误:1146 SQLSTATE: 42S02 (ER_NO_SUCH_TABLE) 消息:表'%s.%s'不存在。...· 错误:1176 SQLSTATE: HY000 (ER_KEY_DOES_NOT_EXITS) 消息:在表'%s'中,键'%s'不存在。...· 错误:1356 SQLSTATE: HY000 (ER_VIEW_INVALID) 消息:视图'%s.%s'引用了无效的表、列、或函数,或视图的定义程序/调用程序缺少使用它们的权限。
MySQL MySQL管理之数据类型 9 MySQL MySQL管理之索引 10 MySQL MySQL管理之事务管理 11 MySQL MySQL管理之存储过程 12 MySQL MySQL管理之视图...table_expr:表示查询条件表达式,包括表名称和WHERE子句。...案例: //方法一:捕获sqlstate_value DECLARE CONTINUE HANDLER FOR SQLSTATE `42s02` SET @info=`NO_SUCH_TABLE`; /...在使用光标前需要先声明光标。光标必须声明在声明变量、条件之后、声明处理程序之前。 1、光标的声明 MySQL中使用DECLARE关键字来声明光标。...DROP{PROCEDURE|FUNCTION}[IF EXISTS] sp_name sp_name:表示要移除的存储过程的名称 IF EXISTS:表示如果程序不存在,它可以避免发生错误,产生一个警告
从提示来看,mysql.innodb_table_stats这张表是不存在,但是执行了show tables显式存在这张表, mysql> show tables; +----------------...(42S02): Unknown error 1146 1146的错误,表不存在, P.S....https://dev.mysql.com/doc/mysql-errors/5.7/en/server-error-reference.html 有点懵了,这张表到底存在不存在?...,原则上,不影响系统运行,因此数据库可访问但是当需要用到表的统计信息时,因为表实际已经被删除,所以提示错误。...(42S02): Unknown error 1146 此时,我们就可以用到运维领域的第一法宝 - 重启,再次执行, mysql> CREATE TABLE innodb_table_stats (
1051:数据表不存在 1054:字段不存在 1065:无效的SQL语句,SQL语句为空 1081:不能建立Socket连接 1114:数据表已满,不能容纳任何记录 1116:打开的数据表太多...:当前用户无权访问数据表中的字段 1146:数据表不存在 1147:未定义用户对数据表的访问权限 1149:SQL语句语法错误 1158:网络错误,出现读错误,请检查网络连接状况 1159:网络错误...错误:1356 SQLSTATE: HY000 (ER_VIEW_INVALID) 消息:视图’%s.%s’引用了无效的表、列、或函数,或视图的定义程序/调用程序缺少使用它们的权限。...错误:1361 SQLSTATE: HY000 (ER_TRG_ON_VIEW_OR_TEMP_TABLE) 消息:触发程序的’%s’是视图或临时表。...错误:1443 SQLSTATE: HY000 (ER_VIEW_PREVENT_UPDATE) 消息:表’%s’的定义不允许在表’%s上执行操作%s。
sp_statement指遇到错误的时候,需要执行的存储过程或存储函数。...DECLARE CONTINUE HANDLER FOR SQLSATTE '42S02' SET @info = 'NO_SUCH_TABLE'; -- 忽略错误值为42S02的SQL异常 DECLARE...先重新建表,再将处理程序的处理策略换为EXIT:在执行存储过程中遇到了错误,那么就立即退出。...从表中的结果来看,也是正确的插入了两条数据。 在回头琢磨一下书的话:sp_statement参数为程序语句段,表示在遇到定义错误时,需要执行的存储过程或者函数。...总之,下面的核心知识点没有疑问:在声明条件后并遇到相关的错误条件后,那就看应该怎么处理。如果是EXIT,那么存储过程只生效到错误处的上一条SQL。
01527 SET 语句引用的专用寄存器在 AS 上不存在。01539 连接成功但只应使用 SBCS 字符。01543 已忽略重复约束。01545 未限定列名已解释为相关引用。...类代码 20 找不到 CASE 语句的条件 表 15. 类代码 20:找不到 Case 语句的条件 SQLSTATE 值 含义20000 找不到 CASE 语句的条件。...42736 在 LEAVE 语句上指定的标号找不到或无效。42737 未定义在处理程序中指定的条件。42738 在 FOR 语句的 DECLARE CURSOR 语句中指定了重复的列名或未命名的列。...42742 类型表或带类型视图层次结构中已存在同类子表或子视图。42743 在索引扩展名中未找到搜索方法。 42744 在变换组中未定义 TO SQL 或 FROM SQL 变换函数。...42735 对缓冲池,未定义表空间的节点组。 42736 在 LEAVE 语句上指定的标号找不到或无效。 42737 未定义在处理程序中指定的条件。
1.初识视图 1.视图的概念和作用 什么是视图:是从一个或多个表中导出来的表,它是一种虚拟存在的表,表的结构和数据都依赖于基本表。 作用: 简化查询语句:简化用户的查询操作,使查询更加快捷。...(默认与SELECT语句查询的列相同) AS:表示视图要执行的操作。 select_statement:一个完整的查询语句,表示从某些表或视图中查出某些满足条件的记录,将这些记录导入视图中。...例如,当在一个视图的基础上创建另一个视图时,进行级联检查。 LOCAL:操作数据时满足该视图本身定义的条件即可。...2.视图管理 1.创建视图 在多表上创建视图 #创建视图 mysql> CREATE VIEW view_goods_cate As ->SELECT g.id,g.name,c.name category_name...SELECT * FROM view_goods; ERROR 1146 (42S02) : Table 'shop. view_ goods' doesn't exist 3.视图数据操作 1.添加数据
处理思路:可以根据报错信息,进入db,执行SHOW CREATE VIEW view_name\G,查看该view的定义,逐一检查该view的基表,列,或相关函数与用户是否具有相关权限。...考虑重建或删除视图。...处理思路:检查该视图定义,检查字符集,考虑重建或删除视图。...原因二(MySQL 5.5及以下版本可能出现): 表损坏导致该表找不到(InnoDB)。...可能merge的表不存在,或者该表合并的基表包含非MyISAM引擎的表。 处理思路:删除或者重建该MERGE表。
| LOCAL] CHECK OPTION]参数表示视图在更新时保证在视图的权限范围之内 可选的ALGORITHM子句是对标准SQL的MySQL扩展。...,其他的信息为NULL说明这是一个虚表,如果是基表那么会基表的信息,这是基表和视图的区别 SHOW CREATE VIEW语句查看视图详细信息 SHOW CREATE VIEW stu_class View...`stuno`) utf8 utf8_general_ci 执行结果显示视图的名称、创建视图的语句等信息 在VIEWS表中查看视图的详细信息 在MYSQL中,INFORMATION_SCHEMA...通过视图更新的时候都是转到基表进行更新,如果对视图增加或者删除记录,实际上是对基表增加或删除记录 我们先修改一下视图定义 ALTER VIEW stu_class AS SELECT stuno,stuname...[RESTRICT | CASCADE] DROP VIEW能够删除1个或多个视图。
DROP TABLE会在 MySQL 5.7主服务器上的部分完成 语句在MySQL 8.0从服务器上复制时失败。...3.5、DROP VIEW: 如果命名视图不存在且未进行任何更改,则会失败。...在此示例中演示了行为更改,其中 DROP VIEW语句失败,因为命名视图不存在,如下: mysql> CREATE VIEW test.viewA AS SELECT * FROM t; mysql>...操作在MySQL 8.0从服务器上复制时会失败。...要避免此故障情形,请在DROP VIEW语句中使用IF EXISTS语法以防止对不存在的视图发生错误。 3.6、不再允许部分执行帐户管理声明。帐户管理语句对所有命名用户成功或回滚,如果发生错误则无效。
领取专属 10元无门槛券
手把手带您无忧上云