昨天我偶然发现了一个奇怪的问题。
我有一个 PHP 脚本,它根据一些输入为我创建 mysql 数据库。
当脚本尝试生成名为“9e1617bafr1_1”(不带引号)的数据库时,我收到此错误“MySQL 错误 1064:您的 SQL 语法有错误”。
查询是CREATE DATABASE IF NOT EXISTS 9e1617bafr1_1
尝试在 https://de.piliapp.com/mysql-syntax-check/ 上执行它时,我也收到错误和 http://sqlfiddle.com/
我通过在数据库名称前后使用反引号解决了这个问题,但我仍然想知道为什么我首先会收到此错误,因为“9d1617bafr1_1”、“9f1617bafr1_1”等的创建工作完美。
不幸的是,我在互联网上没有找到任何关于这种行为的有用信息,因为我对此非常好奇,我想问是否有人知道这是否是保留字或者它是否以任何方式违反了 SQL 标准?
最佳答案
9e1617bafr1_1 被解析为数字 (9e1617) 后跟字符串 (bafr1_1)。您的其他尝试“9d1617bafr1_1”和“9f1617bafr1_1”不以科学记数法开头,因此它们不会以这种方式进行解析。
关于mysql - 尝试创建名为 : 9e1617bafr1_1 的数据库时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551269/