Mysql Создает базу данных со специальными символами в названии

StackOverflow https://stackoverflow.com/questions/925696

  •  06-09-2019
  •  | 
  •  

Вопрос

Я хочу создать базу данных, имя которой будет содержать специальные символы.например, (., - , _, @, #, $, %, &, *)

кто-нибудь может предоставить какие-либо результаты по этому поводу?

Это было полезно?

Решение

Я бы настоятельно рекомендовал вам не создавать базы данных с такими именами.Но если вам абсолютно необходимо, вот ограничения:

  • Ни один идентификатор не может содержать 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 и _.Вы можете сохранить свое "экзотическое" имя в столбце или комментарии.

Длинный ответ:

  • Вы можете называть свои столбцы, таблицы, ключи, внешние ключи, представления и даже базы данных экзотическими символами, но, скорее всего, вы пожалеете об этом в будущем.
  • Если Вы настаиваете на этом, вам нужно будет указать ваши идентификаторы в backticks (`).
  • В случае, если ваш идентификатор должен содержать другой ` внутри, вы можете экранировать его, указав его дважды (напримерэкзотическое'имя --> `экзотическое`имя`)
  • Чтобы все было не так просто, если вы используете экзотические (или даже нетрадиционные) символы в имени вашей базы данных (включая простой пробел), эти символы (насколько мне известно, все, кроме a-z, A-Z, 0-9 и _) экранируются в 4-значные шестнадцатеричные квадруплеты, экранируемые символом @, например`моя база данных` становится моей базой данных @0020database.Эта форма используется как имя каталогов / файлов, в которых хранятся Ваши базы данных / таблицы, и, например,элементы в information_schema.Более того, INNODB_SYS_FOREIGN вполне может зависеть от операционной системы (теоретически это означает, что вы можете захотеть запустить SHOW VARIABLES LIKE 'version_compile_os' адаптироваться к нему).Видите ли, с экзотическими названиями все становится намного, намного сложнее, и в конце концов оно того не стоит.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top