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

Может ли MySQL создавать базу данных с точкой?

Позволяет ли MySQL создавать базу данных с точкой (.) в ее имени?

Я использую MySQL 5.1.22.

4b9b3361

Ответ 1

Вы не можете использовать точку в имени базы данных. Кроме того, я бы избегал использовать его в любом идентификаторе. Общим соглашением является использование подчеркивания вместо этого. Он будет служить той же цели и позволит избежать путаницы. Если у вас сделать есть веская причина использовать странные и нелегальные символы в имени таблицы или поля, то вам нужно ее избежать.

чтобы избежать идентификаторов в MySQL, используйте обратную сторону:

SELECT `select`, `some.field name`, `crazy()naming+here`
FROM `my-=+table`

У меня есть привычка отбрасывать все имена полей, независимо от того, нужна ли вам эта практика, но это еще одна история.

Ответ 2

Вы можете использовать . в именах из MySQL 5.1.6 в соответствии с документацией.

Однако, как было сказано и будет сказано снова, пожалуйста, не делайте этого. Для каждой проблемы, которую, как вы думаете, сейчас решаете, вы будете создавать пять, которые вас укусят позже. Поскольку. используется для определения имен - например, database.table или table.column вам придется указывать имя своей базы данных каждый раз, когда вы ее используете. *

Вы можете сделать это с помощью backticks:

CREATE TABLE `do.not.do.this` (col INT);

или используя двойные кавычки, если вы установите следующую опцию:

SET sql_mode='ANSI_QUOTES';
CREATE TABLE "asking.for.problems" (col INT);

* Не строго верно - вы должны процитировать любой символ, который не является буквенно-цифровым или _ или $, но. особенно неприятный вариант для ваших имен.

Ответ 3

До MySQL 5.1.6 имена баз данных и таблиц не могут содержать /, \, . или символы, которые недопустимы в именах файлов (см. 8.2. Имена объектов схемы). В версиях после 5.1.6 вы должны указывать свое имя табуляции с помощью backtick (`), но, как и другие, также рекомендуется: вы не должны этого делать, чтобы предотвратить ненужные проблемы.

Ответ 4

MySQL 5.0.22, похоже, не позволяет:

% mysqladmin -uroot -pXXX create foo.bar
mysqladmin: CREATE DATABASE failed; error: 'Incorrect database name 'foo.bar''

Даже если это допустимо, я бы настоятельно рекомендовал против него.

По крайней мере, вам придется избегать ссылки на эту базу данных с обратными окнами в каждом запросе, который когда-либо ее использует.