Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我需要在MySQL中引用表名“5E09C9C09E9BA0CCBCB3701”? 上下文_Mysql_Sql_Syntax - Fatal编程技术网

为什么我需要在MySQL中引用表名“5E09C9C09E9BA0CCBCB3701”? 上下文

为什么我需要在MySQL中引用表名“5E09C9C09E9BA0CCBCB3701”? 上下文,mysql,sql,syntax,Mysql,Sql,Syntax,我在应用程序中遇到了一个与MySQL表名相关的错误。我们的应用程序将表名生成为24位十六进制数字(即:5E09C9C09E9BA0CCECB3701) 有一段时间一切正常,但突然我们开始看到某些表名出现SQL语法错误。这个bug很容易修复:我们需要保护表名 SQL语法错误: 从5E09C9C09E9BA0CCECBCB3701中选择*; 无错误: 从'5E09C9C09E9BA0CCECBCB3701'中选择*; 问题: 为什么需要保护以5e09开头的表名 我查阅了MySQL文档中的保留字

我在应用程序中遇到了一个与MySQL表名相关的错误。我们的应用程序将表名生成为24位十六进制数字(即:
5E09C9C09E9BA0CCECB3701

有一段时间一切正常,但突然我们开始看到某些表名出现SQL语法错误。这个bug很容易修复:我们需要保护表名

SQL语法错误:

从5E09C9C09E9BA0CCECBCB3701中选择*;
无错误:

从'5E09C9C09E9BA0CCECBCB3701'中选择*;

问题: 为什么需要保护以
5e09
开头的表名

我查阅了MySQL文档中的保留字或十六进制文字符号,但在SQL语句中找不到对
5e09
的特殊解释的任何解释


而且,如果有人知道,还有什么特殊前缀可能会破坏SQL语句的语法?

我猜5E09被解析为一个数字(),解析器难以将这个数字与表名的其余部分连接起来(推测),因为mysql允许表名以数字开头,但要求它不仅仅由数字组成

见,引述:

标识符可以以数字开头,但除非引用,否则不能仅由数字组成

换句话说,所有以[0-9]E[0-9]开头的表名都应该显示相同的行为

刚刚启动了一个本地mysql实例,模式似乎匹配:

  • 5e0x不起作用
  • 5f0x确实有效
  • 5eax确实有效

<>我想把它归类为一个bug,尽管它是一个低优先级的一个):

你试过另一个名字吗?类似于5E09C9C09E9BA0CCBCB3701K的内容?引用了“建议您不要使用以Me或MeN开头的名称,其中M和N是整数。”,“使用MD5()生成表名时要小心,因为它可以生成非法或不明确格式的名称”,您可以在官方mysql开发频道上使用此作为参考。