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

Имена в именах столбцов в MySQL DB

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

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

Ответ 3

Имена дескрипторов в именах баз данных также не очень хороши. Но вы можете использовать их с трюком backtick `

`name-with-hyphen`

Ответ 4

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

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

create database `pre-ca_db`;

Удачи!

Ответ 5

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

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

Ответ 6

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

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