sqlwarning mysql_mysql提示[Warning] Invalid (old?) table or database name问题的解决方法

DROP TABLE IF EXISTS [TEMP_TABLE_NAME];

create temporary table [TEMP_TABLE_NAME] select col1,col2,... from [TABLE_NAME];

alter table [TEMP_TABLE_NAME] add unique idx_col1(col1);

经过以上操作中,多次出现该warning问题。通过查询和跟踪调试源码,有以下线索和处理方式:

mysql的"[Warning] Invalid (old?) table or database name"问题出现位置:

sql_table.cc:279

uint explain_filename (THD* thd, const char *from, char *to , uint to_length , enum_explain_filename_mode explain_mode )

跟踪代码发现,只有在ha_innodb.cc:1946的innobase_convert_identifier 中调用explain_filename函数。

/*****************************************************************//**

Convert an SQL identifier to the MySQL system_charset_info (UTF-8)

and quote it if needed.

@return pointer to the end of buf */

static char* innobase_convert_identifier (

/*========================*/

char* buf, /*!< out: buffer for converted identifier */

ulint buflen, /*!< in: length of buf, in bytes */

const char * id, /*!< in: identifier to convert */

ulint idlen, /*!< in: length of id, in bytes */

void* thd, /*!< in: MySQL connection thread, or NULL */

ibool file_id) /*!< in: TRUE=id is a table or database name;

FALSE=id is an UTF-8 string */

顺着线索向上查找,发现在有两个位置调用了innobase_convert_identifier 函数,分两个线索继续查找。

线索一:

ha_innodb.cc:2034

调用innodb_convert_identifier函数

/*****************************************************************//**

Convert a table or index name to the MySQL system_charset_info (UTF-8)

and quote it if needed.

@return pointer to the end of buf */

extern "C" UNIV_INTERN char* innobase_convert_name (

/*==================*/

char* buf, /*!< out: buffer for converted identifier */

ulint buflen, /*!< in: length of buf, in bytes */

const char * id, /*!< in: identifier to convert */

ulint idlen, /*!< in: length of id, in bytes */

void* thd, /*!< in: MySQL connection thread, or NULL */

ibool table_id) /*!< in: TRUE=id is a table or database name;

FALSE=id is an index name */

从函数定义和函数功能来看,该函数是将mysql的表名或者索引名转换成utf8,与字符集相关。查看现有数据库字符集和生成的临时表字符集均为lanti1,推断是可能的原因之一。

处理方式:

修改数据库的字符集为utf8,观察数据库是否仍然出现该错误。

线索二:

ha_innodb.cc:6269

调用innodb_convert_identifier函数

/*****************************************************************//**

Creates a table definition to an InnoDB database. */

static create_table_def (

/*=============*/

trx_t* trx, /*!< in: InnoDB transaction handle */

TABLE* form, /*!< in: information on table

columns and indexes */

const char * table_name, /*!< in: table name */

const char * path_of_temp_table, /*!< in: if this is a table explicitly

created by the user with the

TEMPORARY keyword, then this

parameter is the dir path where the

table should be placed if we create

an .ibd file for it (no .ibd extension

in the path, though); otherwise this

is NULL */

ulint flags) /*!< in: table flags */

在create_table_def 函数中,调用row_create_table_for_mysql函数后,当返回值为DB_DUPLICATE_KEY时,调用innodb_convert_identifier,从而触发该warning。

row0mysql.c:1820

UNIV_INTERN int row_create_table_for_mysql(

/*=======================*/

dict_table_t* table, /*!< in, own: table definition

(will be freed) */

trx_t* trx) /*!< in: transaction handle */

该函数中调用了更深层次的函数,但从调试代码来看,暂时没有发现导致该问题的点。

处理方式:

在线索一中的处理方式不能解决问题的情况下,再进行进一步的代码分析。

总结:

经过以上代码调试和分析,得出两条线索,但是一直未能重现该问题。因此,目前只能对现有服务器进行线索一的处理。如果按照线索一处理方式处理后,仍然出现该问题,将对第二步进行深入的分析。

作者 king_wangheng

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言操作符优先级

转自&#xff1a;http://www.cnblogs.com/xiehy/archive/2010/02/04/1663825.html 优先级 运算符 含 义 要求运算 对象的个数 结合方向 1 () [] -> . 圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符 自左至右 2 ! 逻辑非运算符 1 (单目运算符)…

linux mysql select_MySQL-Select语句高级应用

阅读目录1.1 SELECT高级应用1.2 select中where子句使用1.3 select中ORDER BY子句1.4 LIMIT子句1.5 多表连接查询1.6 Informatica_schema获取元数据1.7 参考文献1.1 SELECT高级应用1.1.1 前期准备工作本次测试使用的是world数据库&#xff0c;由MySQL官方提供下载地址&#xff1…

为AWT的机器人创建DSL

Java SDK附带了java.awt.Robot类&#xff0c;该类允许键盘和鼠标输入的自动化以及屏幕捕获的创建。 如果您想编写一个模拟用户输入的小型测试应用程序&#xff0c;或者只想自动化一些重复文本的输入&#xff0c;则此功能非常有用。 但是您不想每次都编写一个完整的Java应用程序…

Win7下硬盘安装Redhat双系统

Win7下硬盘安装Redhat Linux 形成双系统过程详解 需要软件 EasyBCD2.0 和 linux ISO 系统镜像 RedHat linux下载地址&#xff1a;http://www.linuxidc.com/Linux/2013-01/78017.htm 安装前准备工作: 1 一个 Windows 盘 D E F 任选其一都可以&#xff0c;将其格式化为FAT32 格式…

java rmi漏洞工具_学生会私房菜【20200924】Weblogic WLS核心组件反序列化命令执行突破(CVE20182628)漏洞复现...

学生会私房菜学生会私房菜是通过学生会信箱收集同学们的来稿&#xff0c;挑选其中的优质文档&#xff0c;不定期进行文档推送的主题。本期文档内容为&#xff1a;Weblogic WLS核心组件反序列化命令执行突破(CVE-2018-2628)漏洞复现》作者介绍&#xff1a;ChowChow&#xff0c;一…

Java泛型中的多态

从作为Java程序员的早期开始&#xff0c;我们都知道如何实例化和使用Collection对象。 实例化为具体类的List接口将如下所示。 List myArrayList new ArrayList();如果myArrayList应该仅保存Integer对象&#xff0c;则从Java 5编译器开始&#xff0c;按照Java Generics规范…

ASP.NET伪静态-无法读取配置文件,因为它超过了最大文件大小的解决办法

一直都在使用微软URLRewriter&#xff0c;具体的使用方法我就不多说了&#xff0c;网上文章很多。 但最近遇到一个问题&#xff0c;就是当web.config文件里面设置伪静态规则过多&#xff0c;大于2M的时候&#xff0c;就报错&#xff1a;无法读取配置文件&#xff0c;因为它超过…

java定义list_我的Java Web之路59 - Java中的泛型

本系列文章旨在记录和总结自己在Java Web开发之路上的知识点、经验、问题和思考&#xff0c;希望能帮助更多(Java)码农和想成为(Java)码农的人。目录介绍再谈Java中的类型为什么需要泛型&#xff1f;Java中的泛型泛型类型泛型方法总结介绍还记得我在这篇文章(我的Java Web之路3…

Spring查找方法示例

当一个bean依赖于另一个bean时&#xff0c;我们使用setter属性或通过构造函数注入bean。 getter方法将向我们返回已设置的引用&#xff0c;但是假设您每次调用getter方法时都想要一个依赖bean的新实例&#xff0c;那么您可能将不得不采用另一种方法。 在本文中&#xff0c;我…

mysql判断数字的函数_Mysql必读MySql判断汉字、日期、数字的具体函数

《Mysql必读MySql判断汉字、日期、数字的具体函数》要点&#xff1a;本文介绍了Mysql必读MySql判断汉字、日期、数字的具体函数&#xff0c;希望对您有用。如果有疑问&#xff0c;可以联系我们。MYSQL学习几个平常用的mysql函数,MySql判断汉字、日期、数字的具体函数分享给大家…

编码:可视化位图

在过去的一个月左右的时间里&#xff0c;我每天花费一些时间来阅读Neo4j代码库的新部分&#xff0c;以使其更加熟悉&#xff0c;而我最喜欢的类之一是Bits类&#xff0c;该类可以完成所有底层工作&#xff0c;并且到磁盘。 特别是&#xff0c;我喜欢它的toString方法&#xff…

通过更改透明度使图片为透明

使用AlphaBlend函数 函数功能 该函数用来显示具有指定透明度的图像。函数原型 AlphaBlend(HDC hdcDest,int nXOriginDest,int nYOriginDest,int nWidthDest,int hHeightDest,HDC hdcSrc,int nXOriginSrc,int nYOriginSrc,int nWidthSrc,int nHeightSrc,BLENDFUNCTION blendFunc…

(转)CocoaPods:管理Objective-c 程序中各种第三方开源库关联

在我们的iOS程序中&#xff0c;经常会用到多个第三方的开源库&#xff0c;通常做法是去下载最新版本的开源库&#xff0c;然后拖拽到工程中。 但是&#xff0c;第三方开源库的数量一旦比较多&#xff0c;版本的管理就非常的麻烦。有没有什么办法可以简化对第三方库的管理呢&…

为什么子进程每次执行顺序不一样_看完这篇还不懂Redis的RDB持久化,你来打我...

推荐观看&#xff1a;Redis缓存穿透的终极解决方案&#xff0c;手写布隆过滤器_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.comP8架构师串讲&#xff1a;Redis&#xff0c;zookeeper&#xff0c;kafka&#xff0c;Nginx等技术_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​w…

Spring XD用于数据提取

Spring XD是一个功能强大的工具&#xff0c;它是一组可安装的Spring Boot服务&#xff0c;可以独立运行&#xff0c;在YARN或EC2之上运行。 Spring XD还包括一个管理UI网站和一个用于作业和流管理的命令行工具。 Spring XD是一组功能强大的服务&#xff0c;可与各种数据源一起使…

JDK 9 REPL:入门

会议是聚会Java名人的好地方。 Devoxx France是与Java语言架构师&#xff0c;前同事和老朋友Brian Goetz&#xff08; briangoetz &#xff09;见面的一个机会。 我们谈论了JDK 9&#xff0c;而他全都热衷于REPL。 他提到&#xff0c;尽管Java SE 9中有很多重要功能 &#xff0…

sinaapp mysql连接_手把手教你在新浪云上免费部署自己的网站--连接数据库

看完之后&#xff0c;默认你知道怎么将代码上传到新浪云SAE&#xff0c;并且能够成功运行&#xff0c;连接数据库之前&#xff0c;你必须先创建有一个应用。现在我创建一个名称为sampleone的应用&#xff0c;如下图点击左侧的代码管理&#xff0c;选在右侧创建一个版本然后就会…

HDU-4527 小明系列故事——玩转十滴水 模拟

题意&#xff1a;就是平时玩的十滴水游戏&#xff0c;游戏者拥有一定的水滴&#xff0c;能够滴在某些位置&#xff0c;如果一个点上的体积超过了4就会爆炸&#xff0c;向四周传递一个小水滴。该题就是要求模拟这个过程。 分析&#xff1a;这里有一个问题就是不能够使用递归来处…

win8改win7 教程

新入手的WIN8怎么改成WIN7呢&#xff1f;下面以戴尔Dell V3560 win8换win7系统为例说明&#xff1a; win8改win7本文转自http://jingyan.baidu.com/article/ed2a5d1f2a97ee09f6be17e2.html 第一步&#xff1a;开机过程中不断按F2进入到BIOS&#xff0c;更改bios设置&#xff0c…

7 centos 查看程序文件数量_解析CentOS 7中系统文件与目录管理

LINUXLinux操作系统解析CentOS 7中系统文件与目录管理Linux目录结构Linux目录结构是树形的目录结构根目录所有分区、目录、文件等的位置起点整个树形目录结构中&#xff0c;使用独立的一个“/”表示常见的子目录目录目录名称目录目录名称/root管理员家目录/bin所有用户可执行命…