Mysql Prepared statement needs to be re-prepared
2854 ワード
これは私自身のノートで読書性がありません.よく見ていません.しかし、ブレークポイントを記録してからよく研究します.
友達がこの間違いに遭遇してパラメータを修正しました|table_definition_cache | 1400 | | table_open_Cache|2000|はいずれも16384に設定すればよい.
しかし、彼は何の関係があるのか分からない.私はこのエラーコード{"ER_NEED_REPREPARE",1615,"Prepared statement needs to be re-prepared"}を見て、分析した後、彼は関数check_and_update_table_バージョンから投げ出された.その注釈は
その論理は
彼らは確かに連絡があるようだが、どのように連絡しても言えない.この観察者が毛糸を作っている私も知らない.後で話しましょう.ブレークポイントの設定
友達がこの間違いに遭遇してパラメータを修正しました|table_definition_cache | 1400 | | table_open_Cache|2000|はいずれも16384に設定すればよい.
しかし、彼は何の関係があるのか分からない.私はこのエラーコード{"ER_NEED_REPREPARE",1615,"Prepared statement needs to be re-prepared"}を見て、分析した後、彼は関数check_and_update_table_バージョンから投げ出された.その注釈は
Compare metadata versions of an element obtained from the table
definition cache and its corresponding node in the parse tree.
その論理は
static bool
check_and_update_table_version(THD *thd,
TABLE_LIST *tables, TABLE_SHARE *table_share)
{
if (! tables->is_table_ref_id_equal(table_share))
{
Reprepare_observer *reprepare_observer= thd->get_reprepare_observer();
if (reprepare_observer &&
reprepare_observer->report_error(thd)) // NULL
{
/*
Version of the table share is different from the
previous execution of the prepared statement, and it is
unacceptable for this SQLCOM. Error has been reported.
*/
DBUG_ASSERT(thd->is_error());
return TRUE;
}
/* Always maintain the latest version and type */
tables->set_table_ref_id(table_share);
}
DBUG_EXECUTE_IF("reprepare_each_statement", return inject_reprepare(thd););
return FALSE;
}
彼らは確かに連絡があるようだが、どのように連絡しても言えない.この観察者が毛糸を作っている私も知らない.後で話しましょう.ブレークポイントの設定
1 breakpoint keep y 0x0000000000ebd5f3 in main(int, char**) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/main.cc:25
breakpoint already hit 1 time
4 breakpoint keep y 0x00000000016a04bd in open_table_from_share(THD*, TABLE_SHARE*, char const*, uint, uint, uint, TABLE*, bool)
at /root/mysql5.7.14/percona-server-5.7.14-7/sql/table.cc:3038
breakpoint already hit 4 times
5 breakpoint keep y 0x0000000001519a10 in check_and_update_table_version(THD*, TABLE_LIST*, TABLE_SHARE*)
at /root/mysql5.7.14/percona-server-5.7.14-7/sql/sql_base.cc:4219
breakpoint already hit 4 times
6 breakpoint keep y 0x00000000015285bb in Table_cache::add_used_table(THD*, TABLE*) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/table_cache.h:353
breakpoint already hit 2 times
7 breakpoint keep y 0x0000000001527427 in TABLE_LIST::set_table_ref_id(enum_table_ref_type, ulonglong)
at /root/mysql5.7.14/percona-server-5.7.14-7/sql/table.h:2100
8 breakpoint keep y 0x00000000015273e3 in TABLE_LIST::set_table_ref_id(TABLE_SHARE*) at /root/mysql5.7.14/percona-server-5.7.14-7/sql/table.h:2095
breakpoint already hit 1 time