MySQL criar banco de dados com caracteres especiais no nome
-
06-09-2019 - |
Pergunta
Eu quero criar um banco de dados cujo nome terá caracteres especiais nele. por exemplo, (., -, _, @, #, $,%, &, *)
Alguém pode fornecer qualquer saída sobre este assunto?
Solução
Eu recomendaria fortemente que você não criar bancos de dados com nomes. Mas se você absolutamente necessário, aqui estão os restrições :
- No identificador pode conter ASCII NUL (0x00) ou um byte com um valor de 255.
- Banco de dados, tabela e nomes de coluna não deve terminar com caracteres de espaço.
- Banco de dados e nomes de tabela não pode conter “/”, “\”, “”, ou caracteres que não são permitidos em nomes de arquivo.
Para criar um banco de dados, você pode fazer o seguinte:
mysql> create database `really@strange*database$name`;
Outras dicas
Simples:. Do not
Você pode escapar nomes de tabela exóticas usando a crase no mysql, mas eu não sei se você pode usar qualquer dentro dos acentos graves. Vai dar grandes quantidades de dor durante o resto do seu ciclo de vida do software.
Eu prefiro recomendar a criação de outra mesa para segurar que os nomes exóticos.
-- Example:
CREATE TABLE _DatabaseMetadata (
databaseName VARCHAR(255),
exoticName VARCHAR(255)
) DEFAULT CHARSET=utf8;
Resposta curta:
- Não faça isso. Eu recomendo fortemente para manter todos os identificadores consistindo de A-Z, a-z, 0-9 e _ caracteres. Você pode armazenar o seu nome "exótico" em uma coluna ou comentário.
Resposta longa:
- Você pode nomear seu colunas, tabelas, chaves, chaves estrangeiras, visões, até mesmo bancos de dados usando personagens exóticos, mas as chances são Você vai se arrepender no futuro.
- Se você insistir em fazer isso, você vai precisar citando seus identificadores em acentos graves ( `).
- No caso do seu identificador deve conter um outro `dentro, você pode escapar dela afirmando que duas vezes (por exemplo exotic`name ->` exotic``name`)
- Para as coisas para não ser tão simples, se você usar personagens exóticos (ou até mesmo não-convencionais), em nome de seu banco de dados (incluindo um espaço simples), os personagens (que eu saiba, tudo, exceto az, AZ, 0-9 e _) se escapou para quadrigêmeos hexadecimais de 4 dígitos escapou por @, por exemplo, `Meu database` se torna o meu @ 0020database. Este formulário é usado como um nome de um diretórios / arquivos em que seus bancos de dados / tabelas são armazenados, e por exemplo, itens em information_schema.INNODB_SYS_FOREIGN, além disso pode muito bem ser OS-dependente (ou seja, teoricamente, você pode querer executar
SHOW VARIABLES LIKE 'version_compile_os'
se adaptar a ele). Você vê -. Com nomes exóticos tudo fica muito, muito mais complicado e, no final, não é realmente vale a pena