2009-05-29 12 views

答えて

26

このような名前のデータベースを作成しないことを強くお勧めします。あなたは絶対にしなければならない場合でも、ここにいるrestrictions

  • 含めることができません識別子ASCII NUL(0x00の)またはスペースで終わるべきではない255
  • データベース、テーブル、および列名の値を持つバイト文字。
  • データベース名とテーブル名には、 "/"、 "\"、 "。"、またはファイル名に許可されていない文字を含めることはできません。

データベースを作成するには、以下の操作を行うことができます

mysql> create database `[email protected]*database$name`; 
+0

私はそれを動的に作成したいと思いますか?例えば、 - 変数にデータベース名を与えたい。 @a = name.surname; create database @a; –

+0

ありがとうAndre。それは私がそれを必要としていたので大きな助けとなりましたが、それはお勧めできません。ありがとう:) –

+0

どのように私は\テーブル名で\を使用できるようにいくつかのサーバーが来る? – Petah

3

シンプル:しないでください。

あなた MySQLでバッククォートを使用して、エキゾチックなテーブル名をエスケープすることができますが、バッククォート内を使用することができるかどうかはわかりません。これは、ソフトウェアライフサイクルの残りの部分で大きな痛みを与えます。

私はむしろ、そのエキゾチックな名前を保持する別のテーブルを作成することをお勧めします。

-- Example: 
CREATE TABLE _DatabaseMetadata (
    databaseName VARCHAR(255), 
    exoticName VARCHAR(255) 
) DEFAULT CHARSET=utf8; 
+0

これは問題を避ける............... – Pacerier

1

短い答え:

  • にはありません。すべての識別子をA-Z、a-z、0-9および_文字で構成することを強くお勧めします。あなたは、あなたの "エキゾチックな"名前を列またはコメントに保存することができます。

長い答え:

  • あなたはあなたの列、テーブル、キー、外部キー、ビュー、エキゾチックな文字が、チャンスを使用していても、データベースに名前を付けることができますが、将来的にそれを後悔しているつもりされています。
  • あなたがそれを主張するなら、あなたはあなたの識別子をバッククォート( `)で引用する必要があります。
  • あなたの識別子は、内部に別の`を含有しなければならない場合、あなたは(例えばエキゾチック`名 - ` `> `エキゾチックな名前`)を2回、それを述べ、それを逃れることができます場合は、そう単純ではないとの事について
  • をあなたのデータベース(シンプルスペースを含む)の名前にエキゾチックな(あるいは非従来型の)文字を使用すると、それらの文字(私の知る限り、az、AZ、0-9および_を除くすべて)は4桁の16進4桁@によってエスケープされた`私のデータベース`は私の@ 0020databaseになります。このフォームは、データベース/テーブルが格納されているディレクトリ/ファイルの名前として使用されます。また、information_schema.INNODB_SYS_FOREIGNの項目は、OSに依存している可能性もあります(理論的には、SHOW VARIABLES LIKE 'version_compile_os'を実行することをお勧めします)。あなたが見る - エキゾチックな名前では、すべてがはるかに複雑になり、最終的には本当に価値がありません。
関連する問題