Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #90 : 15-10-2009 06:33 » |
|
1) создать временный bat - облом, опять "<" себя неадекватно ведёт, переставляет местами путь и параметры 2)msql_real_query() , куда скормил загруженный из *.sql файла скрипт, тоже ругается на синтаксис .
Мну в шоке, спасите мой моск ))) Необходимо программно запустить восстановление, консоль пользователи откажутся понимать и вообще побьют
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #91 : 15-10-2009 06:49 » |
|
мой моск спас незабвенный Paul https://forum.shelek.ru/index.php?action=profile;u=4809mysql -u ЮЗЕР --password=ПАРОЛЬ --database=БАЗА --execute="\. ПУТЬ\file.sql"
где "\." - собственно, сама команда mysql.exe для заливки файла в базу
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #92 : 16-10-2009 09:31 » |
|
вопрос: во время восстановления, нужно ли отключаться от базы, если в программе есть в данный момент подключение ?
Во время восстановление, естественно, работа клиентов противопоказана. Если ты имеешь в виду, что подключился с административными целями, то ничего страшного, если конечно не изменяешь заливаемых данных на ходу, т.ч. заливка дампа = суть выполнение SQL-операторов. Насчет "<": Леха, учи матчасть, елы-палы! Гуи-гуями, а элементарные вещи знать надо: операции "<" , ">", ">>" и "|" не являются параметрами команды - это конструкции оболочки (в твоем случае - cmd.exe), которые перенаправляют ввод и вывод создаваемого процесса. В командной строке их следует располагать после параметров. Родом эти штуки из мира Unix, но в MSDOS присутствуют с незапамятных времен (как в его наследии - cmd.exe).
|
|
« Последнее редактирование: 16-10-2009 09:40 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #93 : 16-10-2009 09:53 » |
|
Насчет "<": Леха, учи матчасть, елы-палы!
а если я этими символами никогда не пользовался - откуда ж мне знать
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #94 : 16-10-2009 10:00 » |
|
Теперь знаешь А лучше почитай.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #95 : 16-10-2009 11:22 » |
|
Опять какая то проблема: в хранимой процедуре делается select , к примеру тупо: CREATE PROCEDURE proc1() begin select 1; end
вызов в MySQL Query Browser всё отлично работает, возвращается результат, показывется. В программме: int res=mysql_query(m_pCONN,"call proc1");
пишет ошибку: PROCEDURE proc1 can't return a result set in the given context Если в процедуре нет селекта, то всё нормально. что такое и как бороться ?
|
|
« Последнее редактирование: 16-10-2009 11:29 от Алексей1153++ »
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #96 : 16-10-2009 11:39 » |
|
http://dev.mysql.com/doc/refman/5.1/en/c-api-multiple-queries.htmlОпция CLIENT_MULTI_RESULTS при подключении к серверу. Доступно для клиентов, поддерживающих протокол версии 5. Т.е. изначально возвращать рекордсеты из процедур нельзя, но в протоколе 5 есть расширение на этот случай. Какие фичи поддерживает клиент он должен указать при подключении.
|
|
« Последнее редактирование: 16-10-2009 11:42 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #97 : 16-10-2009 11:47 » |
|
спасибо, помогло )
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #98 : 23-10-2009 10:53 » |
|
вопрос:
к примеру, устанавливаю я свою программу на машину, где уже ктото ставил MySQL , задавай своего пользователя и пароль доступа (скажем root и 12345). Определить то, что заново устанавливать СУБД не надо, я , скажем, могу поиском запущеного сервиса, а как добавить своего пользователя/пароль ?
Вообще, как такие стычки разруливать, чтобы и моя программа заработала и чужая не поломалась ?
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #99 : 23-10-2009 12:12 » |
|
Алексей1153++, Ты же используеш разные базы данных. Скажем у тебя будет Alex1153. У других другие имена. Чтоб посмотреть список баз данных, можно предварительно дать запрос SHOW DATABASES; На который выведется все имена баз, которые на данный момент присутствуют в системе, и доступны данному пользователю. Соответственно под root все базы доступны. Чтоб добавить пользователя, почитай тут http://dev.mysql.com/doc/refman/5.1/en/adding-users.html
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #100 : 23-10-2009 14:26 » |
|
Finch, я немного не о том. Во первых, root может там уже не быть, либо быть с другим паролем. То есть, подключиться к СУБД я уже не могу, а значит вынужден переустановить? А та, другая программа, обламывается. Да и с ini файлом как поступить
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #101 : 23-10-2009 14:32 » |
|
В системе может быть установлено и независимо работать несколько копий MySQL любых версий - главное, чтобы конфиги и директории не пересекались. Если необходимо указать параметры клиента (блок [client]) в конфиге, то придется указывать приложению, с каким конфигом работать - это надо учитывать в коде. Если использовать одну СУБД для разных приложений, то достаточно просто создать пользователя, базу и дать пользователю права на эту базу. Кстати, работать под root настоятельно не рекомендую. Хотя бы для подобных случаев. CREATE DATABASE db_name DEFAULT CHARACTER SET cp1251;
CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';
GRANT ALL ON dn_name.* TO 'user_name'@'host';
Существуют старые советы создавать пользователя, которыми не рекомендую пользоваться: GRANT ALL ON db_name.* TO 'user_name'@'host' IDENTIFIED BY 'password';
|
|
« Последнее редактирование: 23-10-2009 14:39 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #102 : 23-10-2009 14:42 » |
|
Алексей1153++, А кто тебе даст устанавливать твою программу Ответ, Администратор даной системы. Значит он или сам, должен создать базу данных и зарегистрировать пользователя в MySQL. Или наделить данными полномочиями твой инсталиционный скрипт. Написав имя пользователя и пароль для доступа в диалоговом окне. Далее дело техники. Можно это также проделать из командной строки mysql -h host -u user -p < batch-file
Где batch-file и будет инсталиционный скрипт.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #103 : 23-10-2009 14:48 » |
|
1) если версия MySQL, уже бытующая на машине, не ниже 5 (я на ней разрабатываю), то согласен использовать уже установленную версию. Однако, как я сделаю CREATE DATABASE db_name DEFAULT CHARACTER SET cp1251;
CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';
GRANT ALL ON dn_name.* TO 'user_name'@'host';
, если я не могу подключиться, ведь я не знаю ни один логин-пароль ? 2) В системе может быть установлено и независимо работать несколько копий MySQL любых версий - главное, чтобы конфиги и директории не пересекались.
то есть, я просто указываю иную папку для установки MySQL, а так же в программе везде уточняю, откуда брать ini ? А как тот факт, что будет запущено два процесса mysqld-nt , как их отличать в случае чего ?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #104 : 23-10-2009 14:52 » |
|
Финч, А кто тебе даст устанавливать твою программу Ответ, Администратор даной системы. Значит он или сам, должен создать базу данных и зарегистрировать пользователя в MySQL далеко не факт, что там будет сидеть кто то грамотный - ведь предыдущая программа ставилась на чистый комп и сама всё настроила, без всякого админа
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #105 : 23-10-2009 14:53 » |
|
А попросить установшика программы, дать тебе доступ? Собственно как и делают админские программы баз данных? далеко не факт, что там будет сидеть кто то грамотный - ведь предыдущая программа ставилась на чистый комп и сама всё настроила, без всякого админа
И пользователи там сидят с админскими полномочиями в системе?
|
|
« Последнее редактирование: 23-10-2009 14:55 от Finch »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #106 : 23-10-2009 14:56 » |
|
какой доступ то, там может (и скорее всего будет) сидеть ничего не понимающий в этом мент, который установил предыдущую программу единственным тычком в Install , а как оно внутри работает - понятия не имеет В общем, вариант получить доступ к предыдущей версии MySQL практически отпадает (
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #107 : 23-10-2009 15:13 » |
|
Есть способ востановления пароля, если его забыл. Там сервер запускается с определенным параметром. Тогда все настройки игнорируются. http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html Но для этого нужны админские права в системе.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #108 : 23-10-2009 15:18 » |
|
Леш, смотри параметры mysqld - можешь поменять порт, имя pipe и все, что угодно.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #109 : 23-10-2009 15:21 » |
|
понятно. Но всё же я склоняюсь к другой копии MySQL. Надо только разобраться, как это хорошо сделать )
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #110 : 23-10-2009 15:30 » |
|
Алексей1153++, золотые слова!
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #111 : 27-10-2009 05:41 » |
|
как оптимизировать такой запрос (если это возможно) SELECT year(_time_), month(_time_), day(_time_), hour(_time_), minute(_time_), second(_time_) FROM log;
на вопрос "зачем": мне так некрасиво )
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #112 : 27-10-2009 06:33 » |
|
Алексей1153++, что ты понимаешь под оптимизацией?
Что такое - мне так некрасиво?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #113 : 27-10-2009 06:47 » |
|
мне не нравится, что одно и то же поле приходится много раз перечислять
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #114 : 27-10-2009 06:48 » |
|
Слав, я так понял - с целью повышения эстетизма Только никакая это оптимизация, коли план выполнения запроса не меняется и время выборки не сокращается... Леш, что за "_time_"? Что ты подразумеваешь под "поле"? Столбец таблицы, константу, функцию? Это на всякий случай - вдруг мы по разному думаем
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #115 : 27-10-2009 07:22 » |
|
_time_ - это поле таблицы log с типом тип DATETIME (ну, я думал, это и так ясно) с оптимизацией - может и не улучшить, а внешний вид хотелось бы вроде SELECT _time_ as t, year(t),month(t),day(t),hour(t),minute(t),second(t) FROM log;
но тут есть 2 "но": 1) алиас не применяется к полю (или я синтаксис ошибнул?) 2) поле _time_ выбирается лишний раз (если бы п.1 работал)
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #116 : 27-10-2009 07:33 » |
|
Алексей1153++, не ищи проблем там, где их НЕТ!
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #117 : 27-10-2009 07:38 » |
|
Sla, самая главная у меня проблема - рассеянность Поэтому предпочитаю один раз написать имя, которое может поменяться, а не в 6 местах одно и то же
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #118 : 27-10-2009 07:51 » |
|
встроенный запрос
select year(t), ... from (select time as t from log)
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #119 : 27-10-2009 08:06 » |
|
SELECT year(t), month(t), day(t), hour(t), minute(t), second(t) FROM (select _time_ as t from log);
ругается Every derived table must have its own alias так то же самое SELECT year(L.t), month(L.t), day(L.t), hour(L.t), minute(L.t), second(L.t) FROM (select _time_ as t from log as L);
|
|
« Последнее редактирование: 27-10-2009 08:08 от Алексей1153++ »
|
Записан
|
|
|
|
|