昨日私は奇妙な問題に遭遇しました。名前が9e1617bafr1_1のデータベースを作成しようとすると、構文エラーが発生する
私はいくつかの入力に基づいて私のためのmysqlデータベースを作成するPHPスクリプトを持っています。
名前が "9e1617bafr1_1"(引用符なし)のデータベースを生成しようとしたとき、このエラーが発生しました。「MySQLエラー1064:SQL構文にエラーがあります。
クエリがhttps://de.piliapp.com/mysql-syntax-check/とhttp://sqlfiddle.com/
上でそれを実行しようとしたとき、私は、エラーを取得する私は、データベース名の前後にバッククォートを使用して、それを解決しますが、私が得た理由私はまだ思ったんだけどCREATE DATABASE IF NOT EXISTS 9e1617bafr1_1
です"9d1617bafr1_1"、 "9f1617bafr1_1"などの作成が完璧に機能していた最初のこのエラー。
残念ながら、インターネット上でこの動作に役立つものは何も見つかりませんでした。私は非常に興味がありますので、これが予約語なのか、それともSQL標準に違反しているのか誰かが知りたいのですか?
これはあなたの名前がcharではなく数字で始まるためです。 try e91617bafr1_1 – scaisEdge
いいえ、MySQLの予約語ではありません。そして、いいえ、それはSQL標準に違反していません...私は標準が実装まで識別子のルールを残していると思います。 MySQLのエラーはパーサーがトークン「9e1617」を*数値リテラル*とみなし、*識別子*が必要となるためです。 – spencer7593