Nano Hash - криптовалюты, майнинг, программирование

Не удалось разрешить действительную таблицу в PhpStorm

Я получаю ошибки unable to resolve table в php-файлах, содержащих SQL-запросы к допустимым таблицам.

введите описание изображения здесь

Если я Ctrl + Enter над запросом, я получаю ожидаемые результаты в консоли БД, а если я расширяю базу данных на вкладке проводника БД, я вижу таблицы.

Это не влияет на выполнение кода, но раздражает, потому что бросается в глаза при написании кода и маскирует настоящие ошибки SQL.

Я попытался обновить соединение с базой данных и убедился, что вкладка php подключается к правильной базе данных.

12.07.2016

  • 1) Попробуйте заново создать соединение с БД с нуля (удалите его и создайте заново); 2) Убедитесь, что одна из баз данных выбрана по умолчанию (в основном -- галочка в столбце разрешения неквалифицированных ссылок для этой БД). В идеале работать с логинами БД, которые могут видеть только 1 БД; 3) Возможно, он конфликтует с другим плагином, ориентированным на БД (попробуйте отключить ВСЕ плагины, не входящие в комплект); 4) И, пожалуйста, всегда указывайте точную версию используемой IDE 12.07.2016
  • @LazyOne - удаление и воссоздание источника данных сработало, спасибо. Я отмечу его принятым, если вы скопируете комментарий в ответ. 12.07.2016

Ответы:


1

Попробуйте заново создать подключение к БД с нуля (удалите существующее и создайте его заново).


Думая о возможных причинах... Я могу представить такой сценарий:

  • работа с проектом в текущей стабильной версии (на данный момент 2016.1.x);
  • попробовать сборку EAP для следующей версии (на данный момент 2016.2) в этом проекте и внести в нее некоторые изменения, связанные с БД (даже простую синхронизацию БД);
  • возвращаясь к стабильной версии (2016.1.x).. и поскольку новая версия использует более новый формат файла / версию для данных, связанных с БД (кэшированная структура БД и т. д.), IDE может начать игнорировать «неизвестный / более новый» формат для таких данных и вместо выбрасывания соответствующее предупреждение просто «молча» выдает сообщение «неразрешенная таблица».

Никаких других идей.

12.07.2016
  • Для меня это помогло перейти к свойствам источника данных и снять флажок Current Schema, оставив проверенной только правильную базу данных. В противном случае он попытается разрешить все из базы данных information_schema. 04.09.2019
  • @SteenSchütt Это говорит мне о том, что вы, возможно, не выбрали БД в настройках подключения ... По крайней мере, это мои мысли о возможной причине такого поведения. 04.09.2019
  • Я выбрал и Current Schema, и нужную мне базу данных. Я предполагаю, что information_schema был текущим, но я просто указываю на это как на дополнительный шаг отладки. 04.09.2019

  • 2

    В 2017.2 мне пришлось пойти на

    Настройки > Языки и платформы > Области разрешения SQL

    и добавьте туда мой проект и ссылку на базу данных, чтобы снова все исправить.

    19.04.2017
  • Я тоже. Он был установлен для всех баз данных, и мне пришлось переключить его на конкретную базу данных, которую я использовал для этого проекта. SQL Server и PHPStorm 2017.2. 31.08.2017
  • также проверьте «Настройки»> «Языки и рамки»> «Диалекты SQL», необходимо выбрать базу данных, которую вы используете. 25.12.2019

  • 3

    Я получал то, что получал OP, и проблема заключалась в том, что моим сервером БД был MariaDB, и я выбрал MySQL в качестве диалекта SQL.

    См. Файл > Настройки: Языки и платформы > Диалекты SQL.

    04.02.2020
  • Спасибо, это сводило меня с ума! Это была и моя проблема, и любой другой ответ ничего не сделал 10.02.2020

  • 4

    Неисправное загрязнение ошибок ТОЖЕ МЕНЯ БЕЗУМИТ!

    Если у меня начнутся проблемы с разрешением SQL, я проверю свои области разрешения (настройки -> Языки и платформы -> Области разрешения SQL).

    Как правило, у меня возникает больше всего проблем, когда для сопоставления моего проекта по умолчанию установлено значение «Все источники данных».

    Следующие шаги всегда исправляют это для меня:

    • Нажмите раскрывающееся меню «Сопоставление проекта».
    • Снимите глобальный параметр «Все источники данных» (требуется, чтобы сделать доступным другой выбор)
    • Щелкните стрелку раскрывающегося списка для подключения к базе данных.
    • Проверьте «Все схемы» (или определенные таблицы)
    • Нажмите OK, чтобы закрыть окно настроек

    Ваши ложные ошибки разрешения должны исчезнуть после следующего цикла синтаксического анализа.

    Вы не ограничены применением описанных выше шагов только к одному соединению с БД, вы можете сделать это для всех соединений в вашем проекте.


    Иногда также работает добавление пользовательской области разрешения, но для меня это случайность.

    • Нажмите на плюсик (справа вверху)
    • Выберите файл, над которым вы работаете, и нажмите «ОК».
    • Выберите столбец «Область разрешения».
    • Снимите флажок «все источники данных»
    • Выберите конкретные ресурсы БД, которые вы хотите

    Повторное подключение к БД никогда не работает для меня.

    Указание таблицы работает хорошо... но это может стать очень громоздким по мере роста проекта.


    Надеюсь это поможет!


    РЕДАКТИРОВАТЬ:

    Я также столкнулся с дополнительной ситуацией, когда PHPStorm разрешал только некоторые из моих запросов, независимо от того, какие настройки разрешения области я использовал. Однако после того, как я прикрепил консоль к своему файлу, они разрешились просто отлично. (Выполните поиск «Прикрепить консоль» в разделе «Справка | Найти действие». Вы также можете добавить его в «Быстрый список» или привязать его к клавишам.)

    19.03.2018
  • Спасибо за объяснение о снятии флажка со всех источников данных. Это действительно помогло. 18.11.2020

  • 5

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

    В конце концов, я заметил текст на панели базы данных, в котором крошечным текстом было написано 0 of 4. Это выглядело так:

    Панель базы данных с сообщением 0 из 4

    Нажав на текст 0 of 4, я обнаружил, что к соединению не добавлено никаких схем, даже несмотря на то, что при первоначальном соединении была установлена ​​база данных по умолчанию. Переход на эту страницу позволяет добавлять схемы. Обязательно выберите «Все схемы», «Текущая схема» или конкретную базу данных, которую вы хотите использовать с вашим подключением.

    30.05.2019
  • Вау, мне интересно, почему это поведение по умолчанию, это тоже вызвало мою проблему. Вероятно, это особенно применимо при наличии нескольких баз данных? 07.11.2019
  • Я думаю, это связано с тем, что самоанализ больших баз данных является относительно дорогой операцией. По сути, связь != самоанализ. Когда вы думаете об этом таким образом, честно говоря, имеет больше смысла иметь его таким, какой он есть. 11.11.2019

  • 6

    Изменен диалект на MariaDB на глобальном уровне и уровне проекта.

    введите описание изображения здесь

    OR

    введите описание изображения здесь

    11.02.2020
  • Это исправило это для меня! Большое спасибо! Это сводило меня с ума. 09.07.2020

  • 7

    Чтобы отклонить эту ошибку в версиях PHPStorm до 2017 года, в которых нет параметра SQL Resolution Scopes:

    1. Перейдите в Файл.
    2. Перейдите в Настройки...
    3. Перейдите в Редактор, а затем в Проверки.
    4. В главе SQL снимите флажок Неразрешенная ссылка.
    5. Нажмите Применить, а затем ОК.
    06.07.2018

    8

    В моем случае сработало добавление имени базы данных перед именем таблицы.

    Например, вместо SELECT * FROM Client поставьте SELECT * FROM database.Client.

    13.09.2017

    9

    Я добавлю еще один ответ, потому что для меня это была совершенно другая (неловкая) причина:

    Я как-то забыл добавить имя базы данных в общие настройки источников данных (где вы также задаете хост, пользователя и пароль).

    01.10.2019

    10

    В моем случае я нажал правую кнопку в SQLScript и изменил диалект на универсальный SQL. Это сработало для меня.

    07.07.2020

    11

    Я решил эту проблему следующим образом:

    1. CTRL + SHIFT + F10
    2. новая консоль запросов
    3. Напишите запрос выбора к базе данных, например:
    SELECT * FROM user WHERE user_email='$email' AND user_password='$password'
    
    1. Введите свою кодовую страницу и щелкните имя таблицы в запросе.
    2. ALT + ВВОД
    3. запустить запрос в консоли
    4. Выберите консоль, которую вы создали
    07.01.2021
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..