Mysql Создать базу данных со специальными символами в названии
Я хочу создать базу данных, имя которой будет содержать в ней специальные символы. например,
(., -, _, @, #, $,%, &, *)
может ли кто-нибудь предоставить какой-либо результат на этом?
Ответы
Ответ 1
Я настоятельно рекомендую вам не создавать базы данных с такими именами. Но если вам абсолютно необходимо, вот ограничения:
- Идентификатор не может содержать ASCII NUL (0x00) или байт со значением 255.
- Имена базы данных, таблицы и столбцов не должны заканчиваться пробелами.
- Имена в базе данных и таблицах не могут содержать "/", "\", "." или символы, которые недопустимы в именах файлов.
Чтобы создать базу данных, вы можете сделать следующее:
mysql> create database `[email protected]*database$name`;
Ответ 2
Простой: не надо.
Вы можете избежать экзотических имен таблиц, используя обратный ход в mysql, но я не знаю, можете ли вы использовать что-либо внутри обратных ссылок. Это даст большую боль в течение всего жизненного цикла вашего программного обеспечения.
Я бы предпочел создать другую таблицу для хранения этих экзотических имен.
-- Example:
CREATE TABLE _DatabaseMetadata (
databaseName VARCHAR(255),
exoticName VARCHAR(255)
) DEFAULT CHARSET=utf8;
Ответ 3
Короткий ответ:
- Не. Я настоятельно рекомендую хранить все идентификаторы, состоящие из символов A-Z, a-z, 0-9 и _. Вы можете сохранить свое "экзотическое" имя в столбце или комментарии.
Длинный ответ:
- Вы можете назвать свои столбцы, таблицы, ключи, внешние ключи, представления и даже базы данных с использованием экзотических символов, но, скорее всего, вы будете сожалеть об этом в будущем.
- Если вы настаиваете на этом, вам понадобится указать ваши идентификаторы в backticks (`).
- Если ваш идентификатор должен содержать другой `inside, вы можете избежать его, указав его дважды (например, exotic`name → ` exotic``name`)
- Для того, чтобы все было не так просто, если вы используете экзотические (или даже нетрадиционные) символы в имени вашей базы данных (включая простое пространство), эти символы (насколько мне известно, все, кроме az, AZ, 0-9 и _) сбежать в четырехзначные шестнадцатеричные квадруплеты, экранированные @, например `my database` становится моей базой @0020. Эта форма используется как имя каталогов/файлов, в которых хранятся ваши базы данных/таблицы, и, например, элементы в information_schema.INNODB_SYS_FOREIGN, более того, вполне могут быть зависимыми от ОС (что означает, теоретически, вы можете запустить
SHOW VARIABLES LIKE 'version_compile_os'
для адаптации к нему). Вы видите - с экзотическими именами все становится намного сложнее и, в конце концов, это не стоит.