2011-07-11 27 views
1

MySQL文を実行すると構文エラーが発生します。MySQL一時テーブル構文エラーの作成

私はbackticksが動作するようにtablenameに追加することができますが、なぜそれが最初に起こるのだろうと思っていた知っています。

Create temporary table 6514202534e1b20f0d6331 (user_id INT (10)) ENGINE=HEAP; 

私は、MySQLクエリブラウザでこれを入れた場合、2つの別々の単語としてテーブル名を扱います - 6514202534e1b20f0d6331

テーブル名は動的に生成されていますが、以前はこれで問題はありませんでした。なぜ、突然すべてが動作しなくなったのか不思議でした。

答えて

2

サーバー(mysql)はこの場合6514202534 * e^1 INTと理解していると思います。全体のフレーズは、たとえばなどのデータベース、テーブルやフィールドではない値や関数、

であることをMySQLサーバは、(明示的に)理解してこのように

CREATE TEMPORARY TABLE `6514202534e1b20f0d6331` (user_id INT (10)) ENGINE=HEAP; 

: `文字を使用して

`order`は合法ですが、orderだけが無効なorder節についてエラーを起こします。

+0

彼の質問を丁寧に読んでください。「タブレット名にバッククォートを追加して動作させることはできますが、最初に何が起こるのか不思議に思っています。 – Dirk

+0

はい私はそれを忘れました。 – Rolice

+1

答えがありがとう、 'e1'は確かに問題だった。バックテックを使用するか、番号ではなく文字で表名を開始することで、エラーを修正できます。 – ssin