Russian Qt Forum
Ноябрь 24, 2024, 05:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: CREATE DATABASE  (Прочитано 28965 раз)
BaltikS
Гость
« Ответ #15 : Октябрь 19, 2009, 11:58 »

break, у Вас слабые познания в области Postgres. Если вы её выбрали в качестве основной, то там много чего интересного есть!
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #16 : Октябрь 19, 2009, 12:04 »

у меня нет познаний в области Postrgress - я работаю с FB

Цитировать
положить psql.exe и запустить его с параметром создания твоей БД.

Это я в самом первом своем посте предложил - но это не имеет ничего общего с созданием базы через QT

А я считаю что костыль большой, т.к. в QT соединение с БД предназначено для работы с этой бд а не для создания через него других баз.
Записан
CroCIV
Гость
« Ответ #17 : Октябрь 19, 2009, 13:45 »

Цитировать
В одной СУБД может быть гипотетически не ограниченное кол-во БД.
Это чудо философской мысли мне непонятно. Если считаете что фраза порлна смысла раскройте мне ее буду коллег поучать :-)
У одного SQL-сервера может быть несколько баз данных.

На счет создания базы - мне кажется способ подключения сначала к ненужной, а потом создание нужной - кривым, хотя я удивлен что так работает.
К Некоторым серверам SQL можно подцепиться не указывая базу данных явно, некоторые сервера к чему-нибудь тебя сами подцепят, некоторые сервера вообще позволяют выборки делать из разных баз данных. Так, например, в Transact-SQL прокатит такой запрос влегкую select * from [bd1].[owner1].[table1], [bdi].[ownerj].[tablek] where ... .
с постиджем я не работал ни разу только в основном с мускулем и с мелкомягким... какие там нюансы хз, но сильно отличаться не должно.

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

Кстати вас не смущает что вы не указываете в каком месте файловой системы создасться БД? или указвываете - в коде не увидел этого.
Это тебя вообще ни как не касается, это головная боль администратора SQL-сервера как и резервирование, как и назначение прав юзерам, и другие технические вопросы. Все что тебя должно заботить это знание адреса сервера в сети, порт на котором интересующий SQL-сервер сидит, твой логин с паролем с достаточными правами и название твоей БД. Все остальное не твое, или твое, если ты по совместительству еще и админ сервера.


Записан
CroCIV
Гость
« Ответ #18 : Октябрь 19, 2009, 13:53 »

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

Как бы стандарт SQL-92 года и все последующие стандарты SQL содержат в себе языковые конструкции по управлению базами данны (не только ими Строит глазки (в широком смысле)) сссно всякий SQL-сервер, если это SQL-сервер, обязан обеспечивать создание баз данных своими SQL конструкциями. Т.е., выходит, не костыль.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #19 : Октябрь 19, 2009, 16:46 »

Цитировать
У одного SQL-сервера может быть несколько баз данных.
Не может быть а я то 5 лет думал что с одним сервером только 1 база работать может - только почему вы мне не про то толкуете в исходной фразе указывалось что " в 1 базе может "гипотетически" быть неограниченное количесвто БД" - а это бред. Даже если файл базы из-за ограничений файловой системы разбивается на несколько частей - это все равно 1 База Данных!

Цитировать
К Некоторым серверам SQL можно подцепиться не указывая базу данных явно, некоторые сервера к чему-нибудь тебя сами подцепят, некоторые сервера вообще позволяют выборки делать из разных баз данных. Так, например, в Transact-SQL прокатит такой запрос влегкую select * from [bd1].[owner1].[table1], [bdi].[ownerj].[tablek] where ... .
с постиджем я не работал ни разу только в основном с мускулем и с мелкомягким... какие там нюансы хз, но сильно отличаться не должно.

И что - я это отрицал??? Просто драйвера Qt позволяют устанавливать соединения с БД а не с сервером БД. Кроме того через драйвер FB создать базу вашим способом мне так и не удалось! Пользователь и пароль - все на местах. И особенностей у БД больше чем вы предполагаете, я все таки считаю что создавать Базу специально подключившись к другой Базе Некрасиво и Неправильно. Представьте если кто-то будет поддерживать программу в которой БД создается таким неявным способом, не сразу можно понять что подключение к временной БД нужно только чтобы получить доступ к функциям сервера для создания Базы.

Цитировать
Это тебя заботить не должно. лишь бы знал какую тебе базу эксплуатировать в итоге нужно.
Нет вы не понимаете часто не большая программа работающая с БД сама ставит сервер и никаких левых баз на компе нет - просто некчему подключиться чтобы потом создавть свою БД!

Цитировать
Это тебя вообще ни как не касается, это головная боль администратора SQL-сервера как и резервирование, как и назначение прав юзерам, и другие технические вопросы. Все что тебя должно заботить это знание адреса сервера в сети, порт на котором интересующий SQL-сервер сидит, твой логин с паролем с достаточными правами и название твоей БД. Все остальное не твое, или твое, если ты по совместительству еще и админ сервера.
БЛА БЛА БЛА - вы не писали программ которые работают с БД? -- неужели думаете что кто-то сделает работу за вас? Возьмем конкретный пример - "программа телефонный справочник" - пользователь купил диск - поставил на свой компьютер - программа работает с базой данных локально - не через интернет - что ему позвать админа, поторый настроет SQL сервер и поймет почему программа не взаимодействует с БД. Все должно работать сразу - из коробки - программа при установки должна проанализировать стоит ли сервер БД - если нет или не той версии то предложить поставить его с указанием что если этого не сделать, то ничего не заработает, и самое главное сама доллжна распаковать/создать свою базу, положить куда надо, чтобы программа могла достучаться к ней!!! И будьте уверены этот пример не надуман - заботиться о расположении, правах и др. вещах сервера Базы не надо только в интернет проектах работающих на специальных хостингах или на крупных закрытых проетах где дейвствительно куча админов - билинговые системы или др...


Цитировать
Как бы стандарт SQL-92 года и все последующие стандарты SQL содержат в себе языковые конструкции по управлению базами данны (не только ими  (в широком смысле)) сссно всякий SQL-сервер, если это SQL-сервер, обязан обеспечивать создание баз данных своими SQL конструкциями. Т.е., выходит, не костыль.

Да но кто говорит что эти конструкции должны работать выполняясь из открытой транзакции к конкретной БД - например я даже в IBExpert не могу выполнить CREATE DATABASE в окошке построения запросов конкретной БД - а вот в isql (спец утилита управления сервером) можно. Вообще не знаю оговорено ли это стандартами но есть конструкции позволяющие делать запросы а есть меняющие метаданные - CREATE TABLE, CREATE DATABASE и т.д. - в FB это называется DDL. и не все вещи из DDL работают в запросах...

Записан
BaltikS
Гость
« Ответ #20 : Октябрь 19, 2009, 16:57 »

Одни эмоции... У меня создалось впечатление, что Вас задело ваше же не знание. У каждого сервера - свои особенности. И уж поверьте если бы я делал "программа телефонный справочник" то никак бы не связывался с PostgreSQL и взял бы SQLITE... Ваши ответы (без обид) не по-существу и выражают лишь негативный способ восприятия управления БД PostgreSQL. Моё мнение отличное от вашего, причём в обратную сторону, как и большинство знающих людей! Вы тут критиковали маленькую утилиту psql которая создаёт базу(хотя реально создаёт не она, а createdb), но сами же пишите про
Цитировать
isql (спец утилита управления сервером)
... Разберитесь в своих мыслях, иначе нам вас не понять...
« Последнее редактирование: Октябрь 19, 2009, 17:40 от BaltikS » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #21 : Октябрь 19, 2009, 17:13 »

break:
Ты путаешь немного серверные БД с обычными. PostgreSQL - серверная БД. Для ее работы нужно установить и настроить серверную часть, а потом к ней коннектиться. А то, о чем ты говоришь, называется embeded. Т.е. работа через локальную БД. На сколько я знаю, в постгресе такого нет, а в огнептице и в мускуле есть. Что тебе мешает распространять скрипт инициализации вместе со своею программой? Как вариант, можно предусмотреть возможность работы без сервера, но использовать тогда в несерверном режиме SQLite.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #22 : Октябрь 19, 2009, 18:17 »

Цитировать
Ты путаешь немного серверные БД с обычными. PostgreSQL - серверная БД. Для ее работы нужно установить и настроить серверную часть, а потом к ней коннектиться. А то, о чем ты говоришь, называется embeded.
Ничего я не путаю - работал и с серверным вариантом и с embedded и доводы привожу весьма весомые - а назвать эмоциями - ума большого не надо! Просто представьте что эта же самая программа "телефонный справолчник" сетевая с бд на одном компьютере и кучей клиентских соединений. Если для справочника телефонов это слишком - то для программы "тест" кот. есть в большинстве учебных заведений - самое оно - и что обязательно вызывать спец админа для настройки такой программы? Кстати говоря Firebird серверная БД но для ее настройки не требуется никакихз особых манипуляций - просто проследуйте совету мастера установки. Это и сделано для возможности писать полноценные сетевые программы работы с БД кот. не требуеют для обслуживания спец админа.

Цитировать
Вы тут критиковали маленькую утилиту psql
ткни место где я критиковал утилиту или показывал негативное отношение к Postgress??? Я наоборот предложил использование подобной утилиты в самом первом своем посте вместо замысловатых манипуляций с подключением к чужой базе. Так что ".. Разберитесь в своих мыслях..." а потом уж мои критикуйте.
Записан
BaltikS
Гость
« Ответ #23 : Октябрь 20, 2009, 06:57 »

Цитировать
ткни место где я критиковал утилиту или показывал негативное отношение к Postgress
Да, согласен, упустил про кртитику, извиняюсь.  Я немного неправильно выразился по поводу негатива не Postgres-а, не его, а метода подхода. Конечно, для учебных заведений может спору нет, FB и подойдёт и в некоторых случаях будет удобней. Теперь назови то, что есть в Firebird и чего нет в PostgreS??? То что существует возможность удалённо создать базу через подключение к БД (даже удалённое) - это скорее плюс. И недостаток FB....
Записан
CroCIV
Гость
« Ответ #24 : Октябрь 20, 2009, 09:09 »

Цитировать
У одного SQL-сервера может быть несколько баз данных.
Не может быть а я то 5 лет думал что с одним сервером только 1 база работать может - только почему вы мне не про то толкуете в исходной фразе указывалось что " в 1 базе может "гипотетически" быть неограниченное количесвто БД" - а это бред. Даже если файл базы из-за ограничений файловой системы разбивается на несколько частей - это все равно 1 База Данных!

СУБД - это не БД, а Система ею Управляющая, т.о. SQL-сервер - частный случай СУБД.

И что - я это отрицал??? Просто драйвера Qt позволяют устанавливать соединения с БД а не с сервером БД.

Кроме того через драйвер FB создать базу вашим способом мне так и не удалось! Пользователь и пароль - все на местах. И особенностей у БД больше чем вы предполагаете, я все таки считаю что создавать Базу специально подключившись к другой Базе Некрасиво и Неправильно. Представьте если кто-то будет поддерживать программу в которой БД создается таким неявным способом, не сразу можно понять что подключение к временной БД нужно только чтобы получить доступ к функциям сервера для создания Базы.

Поправьте, если я ошибаюсь: 1) у СУБД есть служебные БД (хотябы одна); 2) если явно имя БД не указано, то, в зависимости от настроек и особенностей SQL-сервера, юзера коннектит к БД назначенной ему по умолчанию или к служебной БД; 3) SQL-сервер !!!поддерживает!!! стандарт SQL-92 года (т.е. это как минимум означает, что он имеет полный набор типов данных стандарта, поддерживает полный набор языковых конструкций стандарта, т.е. другими словами, я могу, руководствуясь стандартом SQL-92, создать любой заковыристый запрос, и этот запрос на СУБД, претендующей на звание SQL-сервера, этот запрос выполнит с таким же результатом, что и другие SQL-сервера) 4) (частный случай 3) SQL-сервер с помощью SQL позволяет создавать/переименовывать/удалять/копировать базы данных.

Если у вас это так, то в чем проблема мне не понятно.
Если у вас это не так в пунктах 1) и 2), то нужно курить доку работы с драйвером представляющим из себя интерфейс между клиентом и SQL-сервером, и поддерживающим диалог с клиентом посредством SQL конструкций, на предмет как на нем реализовать пункт 4).
Если у вас это не так в пункте 4) или, темболее 3) то зачем вам такой "SQL"-сервер  Непонимающий

Нет вы не понимаете часто не большая программа работающая с БД сама ставит сервер и никаких левых баз на компе нет - просто некчему подключиться чтобы потом создавть свою БД!
Если, разрабатываемый вами, программный комплекс не подразумевает многопользовательской работы, и нет необходимости решать коллизи по доступу к данным, и решать проблемы единого централизованного или распределенного хранения данных, то SQL-сервер лучше не использовать, вам подойдет СУБД попроще (по воробьям из пушки стрелять не целесообразно).
Если, разрабатываемый вами, программный комплекс подразумевает многопользовательскую работу с единым централизованным или распределенным хранением данных так, что необходимо решать коллизи по доступу к данным, то 1) SQL-сервр оправдан 2) если вы в програмный продукт включаете автоматическую установку и настройку SQL-сервера, то это либо совсем частный не универсальный случай (а по тому и не грамотный), ну нормально если будет на одном компьютере установлено 10 программ и у каждой будет по своему MySQLю, у одной будет MySQL 3, у другой MySQL 4, у третьей MySQL Embeded у четвертой MySQL Lite, у пятой MySQL 3.3 и т.д., и на каждом сервере будет по одной - две базы данных, каждая запустит по 3-5 служб в систему, каждая зажмет свой порт, которые кстати придется разруливать программно, каждая сожрет пространство системными таблицами, засрет реестр или конфигурационные файлы.... 3) либо это универсальный мега код продумывающий абсолютно все нюансы установки/настройки SQL-серера или использования уже имеющегося, и я перед вами снимаю шляпу и склоняю колено.

БЛА БЛА БЛА - вы не писали программ которые работают с БД?
писал чутку  Строит глазки

Да но кто говорит что эти конструкции должны работать выполняясь из открытой транзакции к конкретной БД - например я даже в IBExpert не могу выполнить CREATE DATABASE в окошке построения запросов конкретной БД - а вот в isql (спец утилита управления сервером) можно.
Способ быть должен, я б даже сказал обязан, если этого нельзя с данным драйвером можно взять другой, если этого нельзя из открытого соединения к конкретной БД, то должно быть можно как-то подругому. Если SQL-сервер умеет делать селекты и упдейты, а делеты не умеет, то это не SQL-сервер В замешательстве тоже самое касается и криейтов, упдейтов и дропов баз данных никаких исключений тут быть не может. Стандарт на то и стандарт что это стандар а не абычО.
Записан
Vexator
Гость
« Ответ #25 : Октябрь 20, 2009, 09:32 »

на сколько я понял автора топика, его смущает, что мы подключаемся не к СУБД, и указываем ей на создание новой БД, а к "какой то временной БД" в этой СУБД, и потом уже создаем новую БД. в принципе это не совсем логично, это как если бы в painte для создания нового рисунка, надо было бы предварительно открыть другой, уже существующий Улыбающийся так что в чем то автор и прав. или я что то не допонял?

----
ну и в принципе права и вторая сторона:
паинт то тоже имеет свое служебное пространство для работы с новыми данными, в SQL те же функции выполняют служебные БД, к которым, как тут верно подметили, выполняется подключение, если БД не указана...
« Последнее редактирование: Октябрь 20, 2009, 09:36 от Vexator » Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #26 : Октябрь 20, 2009, 11:50 »

Цитировать
на сколько я понял автора топика, его смущает, что мы подключаемся не к СУБД, и указываем ей на создание новой БД, а к "какой то временной БД" в этой СУБД, и потом уже создаем новую БД. в принципе это не совсем логично, это как если бы в painte для создания нового рисунка, надо было бы предварительно открыть другой, уже существующий  так что в чем то автор и прав. или я что то не допонял?
Да вы правильно меня поняли.

Просто для меня это странно что мы подключились к Базе стартовали транзакцию к ней и в контексте это транзакции(котора/я вроде как должна содержать изменения в этой БД) создаем другую базу. А если транзакция RollBack то логично ли что новосозданная БД должна удалиться?

Цитировать
в SQL те же функции выполняют служебные БД, к которым, как тут верно подметили, выполняется подключение, если БД не указана...
серверов много разных в FB например если ничего не указать -то ни к чему не подключишься, так же в SQLite.

В общем надоело отстаивать свою точку зрения, мне это кажется неправильным.
Записан
CroCIV
Гость
« Ответ #27 : Октябрь 20, 2009, 12:31 »

Просто для меня это странно что мы подключились к Базе стартовали транзакцию к ней и в контексте это транзакции(котора/я вроде как должна содержать изменения в этой БД) создаем другую базу. А если транзакция RollBack то логично ли что новосозданная БД должна удалиться?
Эмм.. а, я надеюсь, это очевидно, что создание базы данных нельзя объединять в единую атомарную операцию с, например, созданием таблиц в ней? М.б. потому и не создается база данных, что она включена в транзакцию? Ее надо отдельно создавать или в транзакции с созданием других БД. Создание таблиц БД возможно после того, как подкоммитили создание БД, это уже следующая транзакция, и т.д.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #28 : Октябрь 20, 2009, 13:00 »

Блин я про таблицы хоть слово сказал?
Записан
CroCIV
Гость
« Ответ #29 : Октябрь 20, 2009, 13:32 »

Мне вот эта фраза показалась странной 
А если транзакция RollBack то логично ли что новосозданная БД должна удалиться?
звучит, как будто в одну транзакцию собрано чота в том числе и создание БД. в МуСкуле и МС Скуле такое не прокатит, я пробовал  Смеющийся
тогда да, это вполне логично.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.111 секунд. Запросов: 23.