Оператор CREATE всегда создает ? перед именем первого атрибута отношения?

#mysql #mysql-workbench

#mysql #mysql-workbench

Вопрос:

поэтому всякий раз, когда я запускаю запрос create, кажется, что где-то скрывается скрытый символ ‘?’, он добавляется прямо перед именем первого атрибута. При попытке получить доступ к этому атрибуту с / без ‘?’, я продолжаю получать сообщение об ошибке: столбец не найден в списке полей.

Я пробовал различные синтаксические сахара оператора create, один с `, один с ‘, с пробелом сразу после оператора create. В принципе, любая комбинация, которая существует, кажется, ничего не работает. Кроме того, пробовал перезагрузить сервер базы данных, не помогло.

 create table IF NOT EXISTS temp(usercode varchar(20));
  

Комментарии:

1. Подождите… SQL Server или MySQL?

2. @TheImpaler MySQL, на самом деле это широко обсуждаемая ошибка. Я нашел этот поток bugs.mysql.com/bug.php?id=1478 но эти комментарии уходят далеко назад, я думаю, что может быть решение этого, о котором я не знаю.

3. «кажется, что где-то скрывается символ ‘?'» — Откуда вы знаете, что ? где-то есть?!

4. @JimmyB потому что я вижу это, когда запускаю desc temp; Моих баллов недостаточно, чтобы прикрепить изображение, иначе я бы это сделал. Под столбцом поля написано ?код пользователя.

Ответ №1:

Итак, мне удалось получить ответ самостоятельно. Когда в вашем приложении задействованы файловые операции, бывают случаи, когда к имени атрибута добавляется дополнительный символ ‘/ufeff’. Этот символ, по-видимому, не отображается в стандартных редакторах кода, хотя его можно увидеть в Sublime / Notepad . Таким образом, когда стало очевидно, что это проблема, я заменил имена столбцов в операторе create на:

column_name.replaceAll(«/ufeff», «»);

Это решило проблему, это, по-видимому, ошибка Microsoft Office и не имеет ничего общего с тем, как функционирует SQL.