最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql提示[Warning] Invalid (old?) table or database name問題的解決方法

 更新時(shí)間:2012年07月29日 10:54:02   作者:  
今天一個(gè)朋友的上服務(wù)器出現(xiàn)[Warning] Invalid (old?) table or database name問題,通過分析binlog日志發(fā)現(xiàn),在以下sql語句中出現(xiàn)問題,由于涉及敏感內(nèi)容,用sql語法表示
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);
經(jīng)過以上操作中,多次出現(xiàn)該warning問題。通過查詢和跟蹤調(diào)試源碼,有以下線索和處理方式:
mysql的"[Warning] Invalid (old?) table or database name"問題出現(xiàn)位置:

sql_table.cc:279
uint explain_filename (THD* thd, const char *from, char *to , uint to_length , enum_explain_filename_mode explain_mode )

跟蹤代碼發(fā)現(xiàn),只有在ha_innodb.cc:1946的innobase_convert_identifier 中調(diào)用explain_filename函數(shù)。
復(fù)制代碼 代碼如下:

/*****************************************************************//**
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 */

順著線索向上查找,發(fā)現(xiàn)在有兩個(gè)位置調(diào)用了innobase_convert_identifier 函數(shù),分兩個(gè)線索繼續(xù)查找。

線索一:
ha_innodb.cc:2034
調(diào)用innodb_convert_identifier函數(shù)
復(fù)制代碼 代碼如下:

/*****************************************************************//**
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 */

從函數(shù)定義和函數(shù)功能來看,該函數(shù)是將mysql的表名或者索引名轉(zhuǎn)換成utf8,與字符集相關(guān)。查看現(xiàn)有數(shù)據(jù)庫字符集和生成的臨時(shí)表字符集均為lanti1,推斷是可能的原因之一。
處理方式:
修改數(shù)據(jù)庫的字符集為utf8,觀察數(shù)據(jù)庫是否仍然出現(xiàn)該錯(cuò)誤。

線索二:
復(fù)制代碼 代碼如下:

ha_innodb.cc:6269
調(diào)用innodb_convert_identifier函數(shù)
/*****************************************************************//**
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 函數(shù)中,調(diào)用row_create_table_for_mysql函數(shù)后,當(dāng)返回值為DB_DUPLICATE_KEY時(shí),調(diào)用innodb_convert_identifier,從而觸發(fā)該warning。
復(fù)制代碼 代碼如下:

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 */

該函數(shù)中調(diào)用了更深層次的函數(shù),但從調(diào)試代碼來看,暫時(shí)沒有發(fā)現(xiàn)導(dǎo)致該問題的點(diǎn)。
處理方式:
在線索一中的處理方式不能解決問題的情況下,再進(jìn)行進(jìn)一步的代碼分析。
總結(jié):
經(jīng)過以上代碼調(diào)試和分析,得出兩條線索,但是一直未能重現(xiàn)該問題。因此,目前只能對(duì)現(xiàn)有服務(wù)器進(jìn)行線索一的處理。如果按照線索一處理方式處理后,仍然出現(xiàn)該問題,將對(duì)第二步進(jìn)行深入的分析。

作者 king_wangheng

相關(guān)文章

  • MySQL報(bào)錯(cuò)Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

    MySQL報(bào)錯(cuò)Expression #1 of SELECT list 

    這篇文章主要介紹了MySQL報(bào)錯(cuò)Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • mysql獲取指定時(shí)間段中所有日期或月份的語句(不設(shè)存儲(chǔ)過程,不加表)

    mysql獲取指定時(shí)間段中所有日期或月份的語句(不設(shè)存儲(chǔ)過程,不加表)

    最近需要用mysql獲取一個(gè)時(shí)間段中的所有月份,網(wǎng)上查都是要設(shè)置存儲(chǔ)過程或者加一個(gè)日期表的,不滿足我的需求,翻墻找資料加上自己試驗(yàn),如下代碼分享給大家
    2021-06-06
  • MySQL 用戶權(quán)限與安全管理最佳實(shí)踐

    MySQL 用戶權(quán)限與安全管理最佳實(shí)踐

    MySQL用戶權(quán)限與安全管理是保障數(shù)據(jù)庫系統(tǒng)穩(wěn)定與安全的重要環(huán)節(jié),通過合理設(shè)計(jì)權(quán)限模型、使用 GRANT/REVOKE命令管理權(quán)限、實(shí)施最小權(quán)限原則以及加強(qiáng)密碼,可以大幅降低數(shù)據(jù)庫被非法訪問和數(shù)據(jù)泄露的風(fēng)險(xiǎn),這篇文章主要介紹了MySQL 用戶權(quán)限與安全管理,需要的朋友可以參考下
    2025-03-03
  • MySQL中常用的一些日期和時(shí)間函數(shù)

    MySQL中常用的一些日期和時(shí)間函數(shù)

    MySQL日期和時(shí)間函數(shù)是MySQL中的一個(gè)重要組件,它提供了一些有用的函數(shù)來處理日期和時(shí)間數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于MySQL中常用的一些日期和時(shí)間函數(shù),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • MySQL讀寫分離的項(xiàng)目時(shí)間實(shí)踐

    MySQL讀寫分離的項(xiàng)目時(shí)間實(shí)踐

    本文主要介紹了MySQL數(shù)據(jù)庫的讀寫分離技術(shù),包括一主一從和雙主雙從兩種架構(gòu),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Mysql5.6.36腳本編譯安裝及初始化教程

    Mysql5.6.36腳本編譯安裝及初始化教程

    這篇文章主要為大家詳細(xì)介紹了Mysql5.6.36腳本編譯安裝及初始化的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Centos下 修改mysql密碼的方法

    Centos下 修改mysql密碼的方法

    這篇文章主要介紹了Centos下 修改mysql密碼的方法,需要的朋友可以參考下
    2017-02-02
  • MySQL查詢語句大全集錦

    MySQL查詢語句大全集錦

    這篇文章主要介紹了MySQL查詢語句大全集錦,需要的朋友可以參考下
    2016-06-06
  • 基于mysql多實(shí)例安裝的深入解析

    基于mysql多實(shí)例安裝的深入解析

    本篇文章是對(duì)mysql多實(shí)例安裝進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL報(bào)1045錯(cuò)誤的幾種可能場(chǎng)景

    MySQL報(bào)1045錯(cuò)誤的幾種可能場(chǎng)景

    mysql數(shù)據(jù)庫中常常會(huì)遇見1045錯(cuò)誤,本文主要介紹了MySQL報(bào)1045錯(cuò)誤的幾種可能場(chǎng)景,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02

最新評(píng)論

乌鲁木齐市| 开远市| 镇江市| 图木舒克市| 成武县| 紫阳县| 平原县| 阿鲁科尔沁旗| 正蓝旗| 武乡县| 图们市| 和田市| 海淀区| 太原市| 朝阳市| 汉寿县| 乐平市| 沧州市| 金塔县| 沁源县| 永宁县| 云龙县| 湾仔区| 肥东县| 定兴县| 合肥市| 关岭| 孟连| 鹤壁市| 亳州市| 商城县| 利辛县| 五莲县| 尚志市| 普宁市| 福建省| 甘洛县| 兴仁县| 桑日县| 元朗区| 彩票|