Mysql Создает базу данных со специальными символами в названии
-
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'
адаптироваться к нему).Видите ли, с экзотическими названиями все становится намного, намного сложнее, и в конце концов оно того не стоит.