質問

名前に特殊文字が含まれるデータベースを作成したいと考えています。たとえば、(。、 - 、_、 @、#、$、%、および *)

誰かがこれについて出力を提供できますか?

役に立ちましたか?

解決

このような名前でデータベースを作成しないことを強くお勧めします。ただし、どうしても必要な場合は、次のとおりです。 制限:

  • 識別子には、ASCII NUL (0x00) または値 255 のバイトを含めることはできません。
  • データベース、テーブル、列の名前はスペース文字で終わってはいけません。
  • データベース名とテーブル名には、「/」、「\」、「.」、またはファイル名に使用できない文字を含めることはできません。

データベースを作成するには、次の手順を実行できます。

mysql> create database `really@strange*database$name`;

他のヒント

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

は、<全角> はMySQLでバッククォートを使用して、エキゾチックなテーブル名をエスケープすることができますが、バッククォートの内側にの何でものを使用することができるかどうかはわかりません。それはあなたのソフトウェアのライフサイクルの残りの間、痛みの偉大な量が得られます。

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

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

短い答え:

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

長い答え:

  • 列、テーブル、キー、外部キー、ビュー、さらにはデータベースに珍しい文字を使用して名前を付けることができますが、将来後悔する可能性があります。
  • どうしてもそうしたい場合は、識別子をバッククォート (`) で囲む必要があります。
  • 識別子の内部に別の ` を含める必要がある場合は、それを 2 回記述してエスケープできます (例:エキゾチックな`名前 --> `エキゾチックな`名前`)
  • 物事はそれほど単純ではありませんが、データベースの名前に珍しい(または非慣習的な)文字(単純なスペースを含む)を使用した場合、それらの文字(私の知る限り、a-z、A-Z、0-9 を除くすべて)および _) は、@ でエスケープされた 4 桁の 16 進数の 4 つ組にエスケープされます。「私のデータベース」は my@0020database になります。この形式は、データベース/テーブルが保存されているディレクトリ/ファイルの名前として使用されます。information_schema.INNODB_SYS_FOREIGN 内の項目は、OS に依存する可能性が非常に高いです (理論的には、次のことを実行するとよいでしょう) SHOW VARIABLES LIKE 'version_compile_os' それに適応するため)。ご存知のとおり、エキゾチックな名前を使用すると、すべてがはるかに複雑になり、最終的にはあまり価値がありません。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top