Дефисы в именах столбцов в БД MySQL - PullRequest
19 голосов
/ 20 мая 2009

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

Я использую 2/3-летнюю базу данных MySQL с дефисами в именах столбцов. Когда я пытаюсь использовать эти имена из своего кода Java, имена дефисуются на дефисе (например, air_port становится air) и, следовательно, не обнаруживаются. Я попытался заменить дефисы подчеркиванием в моем коде, надеясь, что БД может относиться к ним одинаково, но это не работает.

Как я могу избежать дефиса или как я могу получить доступ к этим столбцам? Может ли это быть проблемой используемого набора символов?

Ответы [ 6 ]

40 голосов
/ 20 мая 2009

заключить имена в `back-ticks`

4 голосов
/ 20 мая 2009

У вас есть дефисы (-) или подчеркивания (_) в именах столбцов?

Дефисы - большая проблема, потому что если вы в конечном итоге сопоставите имя столбца с переменной, большинству языков не нравятся дефисы внутри имен переменных. Возможно, вы используете одну из библиотек Java, которая автоматически генерирует переменные или объекты, имена которых основаны на именах столбцов.

В зависимости от характера вашей проблемы, вы можете использовать несколько различных подходов:

  1. Переименуйте все ваши столбцы, используя ALTER TABLE. Помните, что это может повлиять на ссылочную целостность или другие приложения, которые зависят от базы данных. Если вы не знаете, что это значит, не делайте этого.
  2. Создание SQL-представлений, которые просто восстанавливают нужные вам таблицы, но с "лучшими" именами столбцов. Это не очень эффективно, но позволит вам получить то, что вы хотите.
  3. Используйте ключевое слово AS при выполнении операторов SELECT для переименования столбцов в запросах.

Ни одно из них не является отличным решением, но оно должно помочь вам начать. Удачи!

3 голосов
/ 18 июня 2014

Дефисы в именах баз данных тоже не годятся. Но вы можете использовать их с трюком с обратным трюком `

`name-with-hyphen`
1 голос
/ 22 марта 2017

Лучше не использовать дефисы в именах столбцов. Я столкнулся с большой проблемой с утверждениями JOIN, где дефисы вызывали большие проблемы - там даже экранирование имен в тиках не работало.

Преобразование имен столбцов для использования подчеркивания - это самый безопасный способ.

1 голос
/ 25 июня 2015

Мне пришлось создать БД с именем pre-ca_db.

Я решил проблему с

create database `pre-ca_db`;

Удачи!

0 голосов
/ 20 мая 2009

Эта запись на форуме MySQL предполагает, что у вас может быть проблема. Однако я думаю, что это относится к данным, а не к именам столбцов.

Это говорит "не делай этого". Не знаю, насколько это авторитетно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...