Позволяет ли MySQL создавать базу данных с точкой (.
) от своего имени?Позволяет ли MySQL создавать базу данных с точкой?
Я использую MySQL 5.1.22.
Позволяет ли MySQL создавать базу данных с точкой (.
) от своего имени?Позволяет ли MySQL создавать базу данных с точкой?
Я использую MySQL 5.1.22.
Вы не можете использовать точку в имени базы данных. Кроме того, я бы избегал использовать его в любом идентификаторе. Общим соглашением является использование подчеркивания вместо этого. Он будет служить той же цели и позволит избежать путаницы. Если у вас есть do, у вас есть веская причина для использования странных и нелегальных символов в имени таблицы или поля, тогда вам нужно ее избежать.
избежать идентификаторов в MySQL, используйте обратные одиночные кавычки:
SELECT `select`, `some.field name`, `crazy()naming+here`
FROM `my-=+table`
Попадая в привычку backticking все имена полей независимо от того, вы потребность в это хорошая практика, на мой взгляд, но это другая история ,
Я категорически не согласен с тем, что тиканье в обратном направлении является хорошей практикой. Специфика MySQL. Не делай этого, если только не придется. Имена столбцов должны (imho) быть чистыми^[a-z0-9 _] + $, а не столкнуться с зарезервированными словами.Экземпляром postgres является «Weird Column Name» (который сохраняет регистр, пробелы, позволяет зарезервировать слова и т. Д.). – tommym
@ user37607, некоторая информация, почему backticking - плохая практика, было бы здорово! – Sam
@Sam, как он сказал, специфичен для MySQL, а это значит, что если вам нужно переключиться на другого поставщика базы данных, вам нужно обновить весь ваш SQL. Вы можете изменить символ escape-кода MySQL, чтобы он соответствовал ANSI-синтаксису, используя флаг ANSI_QUOTES: http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_ansi_quotes – nickf
MySQL 5.0.22 не появляется, чтобы его:
% mysqladmin -uroot -pXXX create foo.bar
mysqladmin: CREATE DATABASE failed; error: 'Incorrect database name 'foo.bar''
Даже если он позволил, я бы настоятельно рекомендовал против него.
По крайней мере, вам придется избегать ссылки на эту базу данных с обратными окнами в каждом запросе, который когда-либо ее использует.
Да, не делайте этого, даже если можете. То же самое относится к именам таблиц с пробелом или юникодом или чувствительностью к регистру. Вы просто просите о неприятностях таким образом. – Thilo
До MySQL 5.1.6, имена баз данных и таблиц не может содержать /
, \
, .
, или символы, которые не разрешены в именах файлов (см 8.2. Schema Object Names). В версиях после 5.1.6 вы должны указывать свое имя таблицы с обратным адресом (`
), но, как и другие, также рекомендуется: вы не должны этого делать, чтобы предотвратить ненужные проблемы.
Вы можете использовать .
в именах MySQL 5.1.6 according to the documentation.
Однако, как было сказано и будет сказано снова, , пожалуйста, не делайте этого. Для каждой проблемы, которую, как вы думаете, сейчас решаете, вы будете создавать пять, которые вас укусят позже. Поскольку . используется для определения имен - например, database.table
или table.column
вам придется процитировать ваше имя базы данных каждый раз, когда вы используете его *
Вы можете сделать это с обратными кавычками:.
CREATE TABLE `do.not.do.this` (col INT);
или используя двойные кавычки, если вы установили следующие опции:
SET sql_mode='ANSI_QUOTES';
CREATE TABLE "asking.for.problems" (col INT);
* не совсем верно - вы должны процитировать любой символ, который не алфавитно-цифровой или _
или $
, но. особенно неприятный вариант в ваших именах.
+1 для «do.not.do.this» и «ask.for.problems» ... просто красиво. –
@RichardMorgan Использование "." в имени таблицы: «каждый раз, когда вы это делаете, Бог убивает щенка». – user3791372
MySQL не разрешает ('.') (' .') – user3791372