Как стать автором
Обновить

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

Опять же, не злорадства ради, до сих пор нельзя sequence'ы по delete удалять, таблицы можно, причем каскадно, а ключи приходится через консоль и drop sequence: https://youtrack.jetbrains.com/issue/DBE-2750

Обратил внимание на упоминание об этом в статье: "Добавили Drop в контекстное меню многих объектов". Полез проверить еще раз и действительно — уже можно, значит этот тикет можно закрыть.

вот ещё тоже закройте :)

Когда новый бесплатный EAP выйдет, для нищебродов?)
Новый бесплатный EAP выйдет в январе.
Вышел: https://blog.jetbrains.com/datagrip/2017/01/19/datagrip-2017-1-eap/
Етсть ли в планах созданиe schema designer'a?
Таких планов пока нет.
Мне вот всёравно неудобно использовать Database Manager в PHPStorm'е и приходится запускать HeidiSQL из под wine :(
@JetBrains посмотрите пожалуйста на HeidiSQL и сделайте такую же удобную Database Manager…
Мы же не можем и просто взять и копировать другие инструменты. У нас есть представление о том, как удобно, и как нет. Зачастую наша задача сделать удобно, потому что как раз у других неудобно :) Поэтому было бы круто, если бы вы написали, что вам так удобно в HeidiSQL, и мы с вами это обсудим.
Разрешите я выскажусь. Лично мне в PHPStorm не удобно (для mysql):
1) нельзя создать базу, можно только открыть уже созданную
2) нельзя сделать дамп базы с данными
3) когда добавляешь новую запись, то для того чтобы она применилась нужно создать новую строку, потому удалить ее. Видимо нужна какая-то кнопка «apply»
4) Не исполняются много запросов за один раз.

И добавьте, пожалуйста, поддержку MongoDB. Очень не хватает.
Спасибо.
1) Из UI нельзя, только скриптом CREATE DATASBE — это действительно так неудобно?
2) На PostgreSQL и MySQL можно.
3) По Ctrl+Enter происходит отправка данных в базу. Вы точно пробовали 2016.3?
4) Приведите пример, пожалуйста. Потому что, вообще, исполняются.
5) Монги пока нет в ближайших планах.
1) Не критично, но хорошо было бы.
2) Как это сделать? Не нашел такой строчки.
3) Спасибо, помогло.

Записал видео проблемы 4 и 2 пунктов.
https://cloud.mail.ru/public/AEEa/C5t5yrAsT

2) Из контексного меню. Есть подозрение, судя по ваемшу видео, что это не 2016.3. Или всё-таки, последняя версия? :)
4) Ctrl+A → Ctrl+Enter запускает всё?

4) насколько я понял, имеется в виду этот баг

А по поводу третьего пункта. Мне кажется, или в GUI кнопки с аналогичным поведением нет?
Нет. Но скоро появится :)
Визард по созданию БД где-то есть? )
Пользуюсь ems много лет. у datagrip много крутых фишек, но каких-то самых используемых визардов не найти (
Я вам честно скажу, мы вообще скептически относимся к идее визардов — вроде, продукт для разрабочтиков и мы ожидаем от них использования SQL. Но я согласен, что во многих случаях это просто убыстряет работу, вероятно этот — один из них.
Ну это просто удобно )
Спасибо за фидбек )
Создание базы точно один из них. Синтаксис в диалектах отличается сильно, легко забыть какую-то опцию типа кодировки и очень часто изменить толком нельзя уже, когда обнаруживаешь (часто далеко не сразу) что что-то забыл, только дропнуть с уже созданными схемами, таблицами, данными, может даже реальными, и создавать новую.
Как решение, здесь можно предложить Live Templates → вы создадите шаблон один раз, а затем просто нажатием пары клавиши будете его вызывать со всеми плейсхолдерами для имени базы/схемы и.т.д.

Settings → Editor → Live templates

Нравятся ваши продукты, особенно DG, как всегда есть нюанс — синхронизация огромных схем.


Работаю с базой, в одной схеме которой есть 50к+объектов: 6к таблиц, 12к представлений, 25к пакетов и остального понемножку. Полная синхронизация почти всегда заканчивается с одним результатом — DG зависнет на Applying Changes.


Но это полбеды, если начать синхронизироваться с другой схемой внутри одного подключения (к примеру SYS), то после завершения Intoinspector примется за полную синхронизацию той огромной

У вас одинаково медленно и в 2016.2 и в 2016.3?

Мне трудно судить по скорости работы, потому как сейчас работаю только с двумя базами, у одной простая структура, там изначально проблем не было, а вторая — эта вот эта:
image


С ней трудно вести подсчеты по времени, полная синхронизация этой схемы прошла только один раз: на Win 10, 2016.3 (x64), Oracle JDK 8u111.


Вчера ночью запустил на Ubuntu 16.04, 2016.03, утром все еще выполнялся Applying Changes, после завершении работы "интраинспектора" интерфейс DG повис

Мать моя… Это что? (если не секрет)
Или это мультитенантная система?
Да, неплохо :) В вашем случае, вероятно стоит отключить загрузку исходников в хранилище. Делается это здесь: image
Напиши пожалуйста, помогло ли.

Поигравшись с настройками:
Load Sources --> None
Auto Sync --> Снял чекбокс (почему сразу я не отключил — непонятно)


Запустил обновляться схему и… опять все повисло на этапе Applying Changes, полез в логи и обратил внимание, что раз в 5 секунд создаются файлы threadDump (пример)


В принципе рабочий workround уже для меня был:


  • запустить синхронизацию
  • остановить ее после индексов
    Так как данная база — это коробочный продукт (АБС банка), в котором структура не так часто меняется, то меня вполне устроят подсказки по полям таблиц/представлений.

Однако интерес заставил поэкспериментировать, а именно поиграться с JDK. Поменял на версию от Oracle и о чудо — синхронизация завершилась. Решил продолжить:


  1. Снес подключение (для чистоты эксперимента)
  2. Создал новое подключение
  3. Настроил Load Sources / Auto Sync
  4. Добавил две схемы
  5. Нажал синхронизировать и ушел по делам

по возвращении в Event Log нашел следующую запись:


27.11.16 14:13  @TEST: Synchronization successful (25m 47s)

Информация о DG и JDK

Oracle JDK:
DataGrip 2016.3
Build #DB-163.7744.4, built on November 18, 2016
JRE: 1.8.0_112-b15 amd64
JVM: Java HotSpot(TM) 64-Bit Server VM by Oracle Corporation


Bundled openJDK
DataGrip 2016.3
Build #DB-163.7744.4, built on November 18, 2016
JRE: 1.8.0_112-release-408-b2 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

Огромное спасибо за подробный ответ. Мы проведём расследвоание по итогам вашего сообщения :)
Если у вас будут ещё вопросы или проблемы, моежете писать мне прямо на почту maxim.sobolevskiy[at]jetbrains.com
Прочитал статью и оплатил. Животворящая сила гифок и подробностей о функционале.
Спасибо! Пишите нам, если будут вопросы.
Мда. Эта штука не понимает, что типы можно создавать в схемах (хотя, конечно, низкий поклон, что вообще такую сущность еще не забыли). Эта штука как-то очень специфично работает с перегружаемыми процедурами, как бог на душу положит синхронизирует состояние с базами, она вообще не понимает, что под пользователем может быть доступно несколько баз. И это только на вскидку.
У вас PostgreSQL? Можно вас попросить немного подробней описать каждую из претензий? Можно по-разному трактовать «не понимает» и «специфично работает».
А поддержка Database diagrams (MSSQL) планируется?
ref https://www.mssqltips.com/sqlservertip/1816/getting-started-with-sql-server-database-diagrams/
Диаграммы есть: https://www.jetbrains.com/datagrip/features/other.html

А возможно как-то сгенерировать скрипт для создания всей базы для MSSQL? ( только схему хотябы, не данные, но включая таблицы, вьюхи, триггеры и т д)

Copy DDL из контекстного меню базы.
Я так понимаю, в шторме оно же используется? Мой лист претензий (основная база PostgreSQL):
  • Нельзя выбрать коннект «по умолчанию» — вообще логика какая-то странная, по которой он выбирается;
  • Очень плохой интерфейс для внешних ключей — строчки запрятаны в отдельную закладку, отображаются текстом, сам интерфейс просмотра структуры неудобный — например очень сложно найти, поле nullable или там unique; SQL скрипт структуры не показывается;
  • Редактор хранимок в виде редактирования DDL — отвратителен. GUI должен облегчать исправление запроса. То что есть здесь — так, чуть расширенная версия psql.
  • Права доступа ни назначить, ни посмотреть, аналогично с владельцем объекта;
  • Объекты в базе не создаются, кроме таблиц — хранимку там, представление, последовательность, роль, схему — все это недоступно. Про создание новых баз — сказали выше. Если клиенту предлагается использовать DDL базы, то зачем вообще такой продукт?


Резюме — что-то небольшое поправить в данных или посмотреть — можно. Чуть задача пообъемнее, или лень на каждый чих лезть в мануал по DDL — то открываем pgAdmin III. Продукт пока уровнем чуть выше (местами) текстовой консоли psql. Местами кстати (встроенный help и сервисные функции) — ниже.
Спасибо за фидбек!

Я не буду отвечать вам по пунктам — все ваши претензии обснованы. Единственное, что непонятно: про редактирвоание процедур «GUI должен облегчать исполнение запроса.». В любом GUI есть элемент «тело функции», в которой и находится сам запрос, как GUI должен помогать его исправлять?
Что касается возможностей по администрированию, мы знаем, что у нас сейчас их почти нет — надеемся заняться этим в будущем. Про GUI писал выше — отчасти здесь проблему решают Live Templates. Но мы обсуждаем возможность его создания для создания базовых объектов. Кстати, когда создаёте объекты, пробуйте в консоли Ctrl+N (Cmd+O на Маке) → IDE поможет вам сгенерировать простой код для начала.

Вы спрашиваете, зачем вообще такой продукт? У нас уже есть много возможностей, которых нет у многих других инструментов. Редактор данных умеет много, IDE позвоялет генерировать предложения INSERT, UPDATE, а самое главное — делает синтаксический анализ вашего кода и поэтому предлагает исправления и быстрое автодополнение. В этом посте, опять же, написано про то, что DataGrip (и все остальные наши IDE) научился искать вхождения внутри объектов. То есть он в первую очередь для того, кому эти фичи помогают в ежедневной работе. Сейчас это скорее SQL-программист, чем администратор БД. Но мы постараемся сделать так, чтобы продукт стал незаменинмым для всех.
Можно ли настроить форматирование так, как у выражения MetallMass, а то Mass не читабельно:
         SELECT
         ISNULL(-gdol.Mass, ISNULL(gdl.Mass, ISNULL(g1.Mass, ISNULL(sc.Mass, ISNULL(CASE WHEN pol.Operation = 0
           THEN -gpol.Mass
                                                                                    ELSE 0 END, 0))))) AS Mass,
         ISNULL(-gdol.MetallMass,
                ISNULL(gdl.MetallMass,
                       ISNULL(g1.MetallMass,
                              ISNULL(sc.MetallMass,
                                     ISNULL(CASE WHEN pol.Operation = 0
                                            THEN -gpol.MetallMass ELSE 0 END,
                                            0)
                              )
                       )
                )
         ) AS MetallMass,
         FROM ...

ставьте вручную переносы строк — форматирование будет относительно них сделано

А не хотите попробовать "засахарить" с помощью COALESCE


SELECT
    COALESCE(-gdol.Mass, gdl.Mass, g1.Mass, sc.Mass, CASE WHEN pol.Operation = 0 THEN -gpol.Mass END, 0)
  , COALESCE(-gdol.MetallMass, gdl.MetallMass, g1.MetallMass, sc.MetallMass, CASE WHEN pol.Operation = 0 THEN -gpol.MetallMass END, 0)
FROM ...
Можно… В данном запросе, пожалуй, это не вызовет никаких накладок. А так я не очень люблю использовать COALESCE из-за двойного вычисления — где то забудешь и попадешь на неоптимальный план запроса…
Вам нужно пойти в Настройки и поставть Wrap Always на Call Expressionimage
Добрый день!
Решил опробовать данный инструмент, и сразу воткнулся в проблему соединения с базой по ssh.

В поддержке нашел вот такой топик.

Скажите, есть ли какой-то туториал по этому поводу?
Спасибо!



у вас шлюз (proxy host) по ssh доступен по порту 2345 вместо 22?


ЗЫ: доступ на сервер через root-пользователя это сильно.

Да, для доступа по ssh используется 2345 вместо 22.
В данном случае, я пытался под разными пользователями попасть, и в скрин попал root :)

а из консоли по SSH пускает на сервер с этим логин/паролем и по этому порту на этом же компе?

Да, всё работает из терминала.
Спасибо, за глубокую диагностику проблемы :)

если коротко:
на закладке "General" вы даёте настройки так, будто вы находитесь на сервере bastion. А на закладке "SSH/SSL" указываете настройки для входа по SSH на сервер bastion.
туннельный локальный порт DataGrip сам сгенерит случайный

Совершенно верно, именно так всё и настроено.
По такому принципу у меня Toad работает.

В данном случае, сообщение об ошибке у меня исчезло и DataGrip начал работать по ssh, после перезапуска компьютера.
Возможно, где-то у меня в системе было что-то не так.

Как usercase:
1) Установил DataGrip
2) Настроил ssh-тонель, получил ошибку
3) Перезапустил систему
4) Соединение по ssh-тоннелю заработало
Выбивает ошибку, в случае если в именовании объекта присутствует #. У нас, к сожалению, таких объектов в базе валом. DbForge автоматом оборачивает имена объектов в гравис (`t#table_name`), а затем исполняет запрос. Можно ли это как-то настроить?
Не нашел, но было бы круто — распределение объектов по подпапкам, сейчас у нас решается костылями на уровне именования.
У вас какая база?
MySql
Кажется, вам нужна эта настройка:
image
Очень красивый интерфейс! Цвет, иконки, формы.
Передал дизайнерам! Спасибо.
Возможно это все уже озвучивалось, но для полноценной работы с Oracle не хватает управления грантами для таблиц/view/sequence/…, работы с partitions, управления юзерами, работы с check constraint-ами (сейчас они лишь отображаются в tree-view, но дропнуть, или изменить не понятно как), flashback-а и т. д… При всех достоинствах и преимуществах DataGrip пока приходится держать запущенный Oracle SQL Developer параллельно с DataGrip.
Спасибо! Всё справедливо, будем добиваться того, чтобы у вас была открыта всего одна программа. Наша :)
Подскажите, а где можно найти изменение collation для таблиц и столбцов?
В смысле, как его менять из UI?

Доброго времени суток, очень приятно IDE часто улучшается но в этот раз в списке таблиц и sequence secuance расположена высшее чем остальные по сути список sequence не часто надо хотел предложить расположит группы () по частоте или сделать возможность настроить порядок.
Еще раз спасибо за хороший продукт.

Понятно. Спасибо за мнение!
Столкнулся с тем, что раньше (PhpStorm+MySQL) при нажатии F4 на хранимке открывалось окно c

DROP PROCEDURE…
CREATE PROCEDURE…

Теперь, после какого-то обновления, только CREATE PROCEDURE… и запуск (Ctrl+A,Ctrl+Enter) ожидаемо приводит к [42000][1304] PROCEDURE… already exists

Это баг или фича? Какая сейчас рекомендуемая практика для изменения хранимок?
Это баг-фича :)
Мы полностью переделали то, как хранятся и отображаются исходники.
И то что, сейчас только CREATE — неудобно. Мы хотим сделать так, чтобы IDE сама понимала что происходит и накатывала миграцию.

в режиме drop-create было удобнее — можно было просто скопировать и вставить куда-нить в консоль уже готовое.
т.е. то, что IDE будет сама понимать надо ли drop или нет конечно класс, но хотелось бы и старый функционал сохранить… хотя бы в виде включаемой опции в настройках

Круто. И раз уж речь о миграциях, то может IDE будет и в каком-то виде выдавать полноценные миграции, чтобы сохранить их где-то под VCS и потом повторять процесс изменений на другом сервере-базе?

И когда планируется? Ну и да, возможность как-то получить поведение (код) подобный старому лучше сделать опционально — не все доверяют умным программам, особенно если не видят код.
Это на дальнейшие планы, да.
И код будет видно перед запуском, конечно же.
Добрый вечер.
Хорошая программа DataGrip, правда ещё не совсем привык к логике работы с проектами, в смысле обычно в других программах просто подключаешься к базе данных и работаешь, сохраняешь отдельные sql файлы, но не связанные между собой в проекты. Основное преимущество программы в том, что можно работать с разными типами баз данных: MySQL, MSSQL, PostgreSQL и прочее.
Для быстрого изучения структуры чужой базы данных очень удобно использовать ER модели. В DataGrip есть возможность отобразить визуализацию таблиц: Diagrams -> Show Visualisation… При этом отображаются таблицы со всеми своими полями (даже со связями, если связи прописаны на уровне базы данных), практически то, что нужно, однако у отображения есть один большой недостаток, что квадраты (именно квадраты!!! а не прямоугольники) отображающие таблицы излишне большие по ширине, съедают слишком много места, в то время как внутри этих квадратов пустота. В итоге эти квадраты не помещаются на страницу, приходится печатать их очень мелкими и ничего не видно. Т.е. от такой визуализации на выходе ноль! к сожалению.
1. Нельзя ли визуализацию сделать более компактной?
Пытаюсь обойти эту проблему тем, что хочу экспортировать структуру базы данных и скормить полученный *.sql файл другой программе для ER моделирования. Такой возможности в DataGrip не нахожу. Есть экстрактор для экспорта данных, но для экспорта структуры всей базы данных (или отдельной схемы) нет.
2. Нельзя ли сделать экстрактор для извлечения пустой структуры базы данных? Кое-что нагуглил на эту тему (http://www.varuste.net/show_create_table.html), но не знаю куда этот скрипт нужно «засунуть» :)

экспорт структуры, это ПКМ на DataSource (тогда все видимые схемы) или на конкретной схеме и там "Copy DDL".

Не сразу понял, что ПКМ это правая кнопка мыши :) Спасибо! Действительно «Copy DDL» помогло мне вытащить всю структуру базы данных в текстовый файл.
Должен признаться, в сложных случаях эта функция отдаёт нерелеватный текст. Так что пожалуйста, перепроверяте его, а мы с свою очередь замёмся проблемами :)
Спасибо, для ER модели это не критично, во всяком случае я смог нарисовать нужную мне схему из «Copy DDL»

прямоугольниками они становятся если отключить отображение колонок.
А более удобный вид — ПКМ на диаграмме и там выбрать себе удобный Layout. Я например предпочитаю Organic.
Причём если несколько раз выбрать один и тот же Layout, то внешний вид будет меняться

:) Нет, не подходит. Они становятся горизонтальными прямоугольниками, а нужны вертикальные прямоугольники, с полным перечнем всех полей. В перечне полей (=колонок) вся соль, как без них между таблицами связи рисовать? Связки между таблицами происходят по полям и важны названия полей, по которым идёт связка, только в этом случае ER модель приобретает мощное прикладное значение, когда глядя на схему за 5 минут можно сложный запрос составить, в незнакомой базе данных. Колонки нужны.
У меня почему-то при переключении Layout ничего не меняется в отображении, странно.

на следующих версиях планируется ли поддержка mongodb?

Таск создали 10 июня 2014 04:35, он и так имеет наибольшее количество голосов, но до сих пор не взят в работу.

Когда мы начинаем работу над каким-то таском, об этом никак не узнать из ютрека — далеко не всегда он переводится в Open, думаю даже не все разработчики воспринимают этот статус как «взят в работу». Но конкретно про этот могу сказать, что он действительно не взят — сейчас у нас в приоритете полноценная поддержка реляционных баз.
Могу добавить, что мы бы с огромной радостью взяли в команду человека, которому прямо сейчас интересно писать поддержку NoSQL баз и находимся в постоянном поиске.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий