Позволяет ли MySQL создавать базу данных с точкой? - PullRequest
25 голосов
/ 22 апреля 2009

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

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

Ответы [ 4 ]

35 голосов
/ 22 апреля 2009

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

для экранирования идентификаторов в MySQL используйте обратную галочку:

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

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

26 голосов
/ 22 апреля 2009

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

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

Вы можете сделать это с помощью обратных галочек:

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

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

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

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

7 голосов
/ 22 апреля 2009

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

3 голосов
/ 22 апреля 2009

MySQL 5.0.22, по-видимому, не позволяет:

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

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

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

...