Позволяет ли MySQL создавать базу данных с точкой (.
) в ее имени?
Я использую MySQL 5.1.22.
Позволяет ли MySQL создавать базу данных с точкой (.
) в ее имени?
Я использую MySQL 5.1.22.
Вы не можете использовать точку в имени базы данных. Кроме того, я бы избегал использовать его в любом идентификаторе. Общим соглашением является использование подчеркивания вместо этого. Он будет служить той же цели и позволит избежать путаницы. Если у вас сделать есть веская причина использовать странные и нелегальные символы в имени таблицы или поля, то вам нужно ее избежать.
чтобы избежать идентификаторов в MySQL, используйте обратную сторону:
SELECT `select`, `some.field name`, `crazy()naming+here`
FROM `my-=+table`
У меня есть привычка отбрасывать все имена полей, независимо от того, нужна ли вам эта практика, но это еще одна история.
Вы можете использовать .
в именах из 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);
* Не строго верно - вы должны процитировать любой символ, который не является буквенно-цифровым или _
или $
, но. особенно неприятный вариант для ваших имен.
До MySQL 5.1.6 имена баз данных и таблиц не могут содержать /
, \
, .
или символы, которые недопустимы в именах файлов (см. 8.2. Имена объектов схемы).
В версиях после 5.1.6 вы должны указывать свое имя табуляции с помощью backtick (`
), но, как и другие, также рекомендуется: вы не должны этого делать, чтобы предотвратить ненужные проблемы.
MySQL 5.0.22, похоже, не позволяет:
% mysqladmin -uroot -pXXX create foo.bar
mysqladmin: CREATE DATABASE failed; error: 'Incorrect database name 'foo.bar''
Даже если это допустимо, я бы настоятельно рекомендовал против него.
По крайней мере, вам придется избегать ссылки на эту базу данных с обратными окнами в каждом запросе, который когда-либо ее использует.