Подтвердить что ты не робот

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

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

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

4b9b3361

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