Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
ВнизMS SQL и mySQL - глюки Найти похожие ветки
← →
Fishka (2004-06-21 15:56) [0]В проекте ADoConnection к MS SQL (ADC), ADOQuery (ADQ),
ADoConnection к MySQL (ADM), ADOQuery (ADQ_my).
Программа работает неверно (некорректно заполняются
TstringList-ы). Драйвер mySQL 3.51.
Меняю в строке ConnectionString в ADM на базу MS SQL - и все нормально.
Наверно, мало информации, но все же в чем проблема и как с этим бороться?
← →
Ega23 © (2004-06-21 16:00) [1]Наверно, мало информации
На 100% в яблочко!
← →
bushmen © (2004-06-21 16:00) [2]А уверен, что данные и там, и там - абсолютно одинаковые?
← →
Fishka (2004-06-21 16:04) [3]bushmen © (21.06.04 16:00) [2]
Да, имена таблиц и полей одинаковы. И запрос не выдает ошибок.
Ищу ошибку в программе уже довольно давно. Больше нет сил.
← →
Anatoly Podgoretsky © (2004-06-21 16:08) [4]А теперь мы всю ночь будем мучатьсяЮ, думать, что работает неверно.
← →
Fishka (2004-06-21 16:16) [5]Мучаться не надо, желательно попытаться помочь.
Вот кусок:
ADQ_my.Close;
ADQ_my.SQL.Clear;
ADQ_my.SQL.Add("SELECT * FROM own where id_own<0");
try
ADQ_my.Open;
except
end;
И если запрос к mySQL, то далее программа работает некорректно.
Если запрос к MSSQL, то далее программа работает нормально (ежедневно в течение 5 месяцев проблем не было, обработано не менее 50 000 записей).
Запрос к mySQL вставлен недавно, и начались проблемы.
← →
bushmen © (2004-06-21 16:18) [6]>то далее программа работает некорректно
В чем выражается это "некорректно"? И как она должна работать правильно?
← →
Ega23 © (2004-06-21 16:19) [7]Запрос к mySQL вставлен недавно, и начались проблемы.
1. Идентичны ли эти запросы?
2. Идентичны ли параметры соединения?
← →
Fishka (2004-06-21 16:23) [8]Ega23 © (21.06.04 16:19) [7]
1.да
2.ConnectionString выглядит по-разному.
mySQL:Provider=MSDASQL.1;Password=mmm;Persist Security Info=True;User ID=fff;Data Source=f_m
MS SQL: Provider=SQLOLEDB.1;Password=111;Persist Security Info=True;User ID=1_1;Data Source=MERC
← →
Ega23 © (2004-06-21 16:34) [9]Тогда см. [6]
← →
Fishka (2004-06-21 16:41) [10]Непонятно. Ошибка в формировании массивов в совершенно другой процедуре. Но если убрать Connection к mySQL (которого не было раньше), то все нормально. Программа без mySQL работала нормально!
Извините, ухожу. Буду завтра. Но надеюсь на помощь.
← →
bushmen © (2004-06-21 16:44) [11]>Непонятно. Ошибка в формировании массивов в совершенно другой >процедуре. Но если убрать Connection к mySQL (которого не было >раньше), то все нормально
А нам-то как непонятно!
>Но надеюсь на помощь.
Надежда умерает последней... вместе с человеком. :))))
← →
Fishka (2004-06-22 09:06) [12]Вопрос, на мой взгляд, может иметь следующие ответы:
1. необходим ADOUpgrade для Delphi 7 (как это было для Delphi 5).
Существует ли он и где его взять?
2. ошибка в драйвере mySQL. Нужен другой. См. п.1.
3. .............
← →
bushmen © (2004-06-22 09:24) [13]>Fishka (22.06.04 09:06) [12]
Или ты отвечаешь на наши вопросы или никто тебе ничем не сможет помочь!
← →
Anatoly Podgoretsky © (2004-06-22 09:26) [14]Ты больше так не делай
except
end;
← →
Fishka (2004-06-22 09:40) [15]1.bushmen © (22.06.04 09:24) [13]
На какой вопрос ко мне нет ответа?
Anatoly Podgoretsky © (22.06.04 09:26) [14]
Почему не делать: try ... except end;?
(А вдруг непредвиденные обстоятельства?)
← →
bushmen © (2004-06-22 09:52) [16]>На какой вопрос ко мне нет ответа?
Хотя бы на этот: bushmen © (21.06.04 16:18) [6]
>Почему не делать: try ... except end;?
(А вдруг непредвиденные обстоятельства?)
Вот в случае непредвиденных обстоятельств ты ничего и не узнаешь :) Ты бы хоть вывод сообщения об ошибке выводил или лучше обработчик поставил.
← →
Fishka (2004-06-22 10:10) [17]1. См. вопрос. Ошибка указана: некорректно заполняются TstringList-ы
2.Конечно, вывод сообщения об ошибке есть. Но какое это имеет отношение к вопросу?
← →
Ega23 © (2004-06-22 10:15) [18]Fishka (22.06.04 10:10) [17]
Блин, ну чего непонятного-то? Если некорректно заполняются TstringList-ы, то это ошибка в прогграмме.
← →
Fishka (2004-06-22 10:18) [19]Ega23 © (22.06.04 10:15) [18]
Но программа корректно работала и работает (если без обращения к mySQL) уже 6 месяцев! Ежедневно!
Но как только был сделан запрос к таблицам mySQL, начался бред.
Почему?
← →
bushmen © (2004-06-22 10:18) [20]>Fishka (22.06.04 10:10) [17]
Сделай проще: добавь на форму 2 GRID"a и в один выведи данные из SQL Server, в другой - из MySQL и сравни результаты. Тебе сразу все станет ясно.
← →
Fishka (2004-06-22 10:26) [21]Но дело не в результатах запроса!
Запрос в том и другом случае возвращает 0 записей (это для отладки).
В программе я ничего не меняю! Только AdoConnection на форме и сразу какой-то бред!
И все-таки см. Fishka (22.06.04 09:06) [12]
← →
bushmen © (2004-06-22 10:29) [22]>Запрос в том и другом случае возвращает 0 записей
Тогда объясни, что ты выводишь в StringList? :))
← →
Anatoly Podgoretsky © (2004-06-22 10:31) [23]Fishka (22.06.04 10:26) [21]
Интересно 0 записей и вывод в StringGrid, воздуза что ли?
← →
Johnmen © (2004-06-22 10:38) [24]>Fishka
Что такое f_m ?
← →
bushmen © (2004-06-22 10:42) [25]>Что такое f_m ?
Это он, наверное, радио слушает :))
← →
Johnmen © (2004-06-22 10:43) [26]>Это он, наверное, радио слушает :))
Тогда это ошибка, т.к. не указана частота... :^)
← →
Fishka (2004-06-22 10:47) [27]bushmen © (22.06.04 10:29) [22]
Anatoly Podgoretsky © (22.06.04 10:31) [23]
Это уже в другой процедуре, которая никакого отношения (вроде бы) ни к каким запросам не имеет.
Johnmen © (22.06.04 10:38) [24]
f_m - System DSN (ODBC Data Source Administrator).
← →
Johnmen © (2004-06-22 10:59) [28]Fishka (22.06.04 10:47) [27]
Это понятно. Ты название драйвера, скрывающегося за f_m, приведи.
← →
Fishka (2004-06-22 11:04) [29]mySQL ODBC 3.51 Driver
← →
bushmen © (2004-06-22 11:08) [30]>Это уже в другой процедуре, которая никакого отношения (вроде >бы) ни к каким запросам не имеет
меня не волнует другая процедура, меня интересует та, в которой у тебя разногласия по данным возникают
← →
Johnmen © (2004-06-22 11:10) [31]>Fishka (22.06.04 11:04) [29]
Коннект проходит ?
Где mySQL сервер стоит ?
← →
Fishka (2004-06-22 11:11) [32]ushmen © (22.06.04 11:08) [30]
В ней и есть разногласия.
← →
bushmen © (2004-06-22 11:45) [33]Хватит играть в прятки: ты говоришь, что у тебя неверно выводится в StringList - вот и напиши, что выводится и что должно выводится!
← →
Fishka (2004-06-22 11:58) [34]Johnmen © (22.06.04 11:10) [31]
Коннект проходит
Free BSD 4.x
← →
Johnmen © (2004-06-22 12:07) [35]Fishka (22.06.04 11:58) [34]
Так. Движемся дальше...
Запрос выполняется ?
← →
Плохиш © (2004-06-22 12:18) [36]В программе 6 месяцев была ошибка, которая проявилась при очередном изменении программы. Лето на дворе, а телепаты ешё/уже не в отпуске :-) и дружно бросились искать ошибку, а ошибка спокойно сидит себе в 17й строке и посмеивается :-)
← →
Fishka (2004-06-22 12:20) [37]Johnmen © (22.06.04 12:07) [35]
Если в программе закомментированы строки:
ADQ_my.SQL.Add("SELECT * FROM own where id_own<0");
try
ADQ_my.Open;
except
end;
то все ОК.
И даже неважно выполняется или нет запрос.Если закомментировать строку с Open, то все равно глюки.
Если вышеприведенные строки раскомментировать, то программа в одной из процедур (где в основном мат. формулы) работает некорректно.
Это все в том случае, если есть mySQL.
Если нет mySQL, то все нормально.
← →
Fishka (2004-06-22 12:22) [38]Плохиш © (22.06.04 12:18) [36]
К сожалению, нет 17-й строки.
Есть всего одна, связанная с ADOConnection (да и то не в программе).
← →
Anatoly Podgoretsky © (2004-06-22 12:24) [39]Продолжаем разговор.
← →
Johnmen © (2004-06-22 12:26) [40]Так. Ещё дальше...
Что такое ADQ_my ? И его параметры.
← →
Fishka (2004-06-22 12:37) [41]Johnmen © (22.06.04 12:26) [40]
Все по умолчанию. Было рассмотрено 2 варианта:
1.Заполнено только Connection (причем было 2 варианта: AdoConnection через ODBC и в нем Use data source name или Use Connection String).
2.Заполнено только ConnectionString (причем было 2 варианта: Use data source name или Use Connection String).
Но все бесполезно : глюки остались.
← →
Johnmen © (2004-06-22 12:42) [42]>Fishka (22.06.04 12:37) [41]
Тихо, сам с собою ? :)
А впрочем мне пофигу. Ведь это тебе надо, а не мне...
← →
Fishka (2004-06-22 12:51) [43]Johnmen © (22.06.04 12:42) [42]
Вроде как дан ответ на вопрос:
ADQ_my = ADOQUERY, в котором все по умолчанию, кроме Connection или ConnectionString.
Я жду помощи. И это нужно мне. Извините, пожалуйста, если что не так в моем ответе.
← →
Johnmen © (2004-06-22 12:56) [44]Т.е. имеем
ADQ_my.Connection указывает на ADOConnection, строка коннекта которого есть коннект к mySQL, и этот коннект проходит.
Так выполняется ли запрос в ADQ_my ?
← →
Fishka (2004-06-22 13:01) [45]Да. Но даже если его как бы нет (есть строка ADQ_my.SQL.Add("SELECT * FROM own where id_own<0"), но Open я не делаю), то все равно глюки дальше.
← →
Курдль © (2004-06-22 13:11) [46]Интересненько...
А может быть приведете участок кода, где дебаггер по ошибке останавливает? (Только, плз, с тэгами "код", если много).
← →
bushmen © (2004-06-22 13:11) [47]>то все равно глюки дальше.
А код дальше какой?
← →
Fishka (2004-06-22 13:19) [48]Курдль © (22.06.04 13:11) [46]
Ошибок нет, но неверно формируются массивы и некорректно заполняется одна из таблиц MSSQL.
bushmen © (22.06.04 13:11) [47]
Мне кажется, дело не в коде, а в свойствах ADOQuery (ADQ_my), который используется для запроса к таблицам mySQL.
См. Fishka (22.06.04 09:06) [12]
3. Неверны свойства ADOQuery (ADQ_my), а именно ...
← →
bushmen © (2004-06-22 13:21) [49]>неверно формируются массивы и некорректно заполняется одна из таблиц MSSQL.
Приведи коды заполнения таблицы и массива
← →
Fishka (2004-06-22 13:26) [50]bushmen © (22.06.04 13:21) [49]
коды заполнения таблицы - в одной транзакции заполняется порядка 20 таблиц, каждая из которых заполняется несколькими записями (в цикле).
Но проблема не в этом (на мой взгляд).
Ведь если нет ADQ_my к mySQL - то все прекрасно!
← →
bushmen © (2004-06-22 13:29) [51]>в одной транзакции заполняется порядка 20 таблиц, каждая из которых заполняется несколькими записями (в цикле).
Вот и привиди этот код
← →
Ega23 © (2004-06-22 13:52) [52]Fishka (22.06.04 13:26) [50]
ДА ЧТО Ж ИЗ ТЕБЯ КЛЕЩАМИ ВСЁ ТЯНУТЬ ПРИХОДИТСЯ!!!! КОМУ ЭТО НАДО: НАМ ИЛИ ТЕБЕ???
← →
bushmen © (2004-06-22 14:06) [53]Это напоминает анекдот:
- Найдите мне, пожалуйста, документ.
- Какой?
- Не могу сказать, т.к. он секретный
← →
Плохиш © (2004-06-22 14:16) [54]
> Ega23 © (22.06.04 13:52) [52]
Спокойно, товарищи. Это идёт тестирование телепатов :-)
← →
Fishka (2004-06-22 14:39) [55]Пытаюсь привести, но оказалось, что ограничение на 7000 ( с чем-то) символов. И все мое сообщение пропало!
while .....
Area.Clear;
for j:=0 to length(Area_Code)-1 do
Attrib_rebro(Area_Code[j],Area_Delta[j],lati,long,Area_coord[j],Area);
//проверяем и для некоторых записей, для которых был поиск в таблице mySQL неверно количество Area.Count (д.б. 1, а оно больше), но для первой записи всегда все верно
...
ADQ_my.Close;
ADQ_my.SQL.Clear;
ADQ_my.SQL.Add("SELECT * FROM own where id_own<0");
try
ADQ_my.Open;
except
end;
....
ADQ.SQL.Add("begin transaction T1;");
ADQ.SQL.Add("insert ....");
......
//вставка в 20 таблиц - ошибок нет
//если массив Area неверно сформирован, то и в таблице некорректные записи
ADQ.SQL.Add(" COMMIT TRANSACTION T1;");
ADQ.ExecSQL;
end;
← →
Fishka (2004-06-22 14:43) [56]
procedure TForm1.Attrib_rebro(kod_z,delta:Integer;lat,lon:String;trebro:array of tochka;Attr:TstringList);
var tt_temp,tt_m,tt_s : tochka;
ii,jj,count_s: Integer;
attrib,attrib_r : Boolean;
a1,b1,c1,a2,b2,c2 : Real;
begin
tt_temp.sh:=StrToFloat(lat);
tt_temp.dl:=StrToFloat(lon);
if (tt_temp.dl<0) then tt_temp.dl:=tt_temp.dl+delta;
for jj:=0 to length(trebro)-2 do
begin
//ä.âñåãäà ïîëó÷èòü êîýôôèöèåíòû
Midd_r(tt_temp,trebro[jj],trebro[jj+1],tt_m,a2,b2,c2);
count_s:=0;
for ii:=0 to length(trebro)-2 do
begin
attrib:=False;
attrib_r:=False;
//íàéäåì êîýôôèöèåíòû
Koef_abc(trebro[ii],trebro[ii+1],a1,b1,c1);
//íàõîäèì ïåðåñå÷åíèå ðåáðà è ïðÿìîé, ñîåä. òî÷êó ñ ñåðåäèíîé ðåáðà
if (a1*b2-a2*b1<>0) and (a1*b2-a2*b1<>0) then
begin
tt_s.sh:=(c1*a2-c2*a1)/(a1*b2-a2*b1);
tt_s.dl:=(b1*c2-b2*c1)/(a1*b2-a2*b1);
// ShowMessage("Òî÷êà ïåðåñå÷åíèÿ "+FloatToStr(tt_s.sh)+" "+FloatToStr(tt_s.dl));
// ïðîâåðèì íå ÿâëÿåòñÿ ëè òî÷êà âåðøèíîé
if ((tt_s.sh=trebro[ii].sh) and (tt_s.dl=trebro[ii].dl)) or
((tt_s.sh=trebro[ii+1].sh) and (tt_s.dl=trebro[ii+1].dl)) then
begin
//òî÷êà ïåðåñå÷åíèÿ ÿâëÿåòñÿ âåðøèíîé ðåáðà - íàäî ïðîâåñòè ïðÿìóþ ê äðóãîìó ðåáðó
//è íà÷àòü ïðîâåðêó ñ ïåðâîãî ðåáðà
break;
end
else
begin
attrib:=False;
//ïðîâåðèì ïðèíàäëåæíîñòü ëó÷ó, ïðîâåäåííîìó èç òî÷êè ê ðåáðó
if (tt_temp.sh<=tt_m.sh) and (tt_temp.dl<=tt_m.dl) and
(tt_temp.sh<=tt_s.sh) and (tt_temp.dl<=tt_s.dl) then
attrib:=True;
if (tt_temp.sh>=tt_m.sh) and (tt_temp.dl<=tt_m.dl) and
(tt_temp.sh>=tt_s.sh) and (tt_temp.dl<=tt_s.dl) then
attrib:=True;
if (tt_temp.sh>=tt_m.sh) and (tt_temp.dl>=tt_m.dl) and
(tt_temp.sh>=tt_s.sh) and (tt_temp.dl>=tt_s.dl) then
attrib:=True;
if (tt_temp.sh<=tt_m.sh) and (tt_temp.dl>=tt_m.dl) and
(tt_temp.sh<=tt_s.sh) and (tt_temp.dl>=tt_s.dl) then
attrib:=True;
//ïðîâåðèì ïðèíàäëåæíîñòü ðåáðó
if attrib then
begin
if (trebro[ii].sh<=trebro[ii+1].sh) then
begin
if (trebro[ii].dl<=trebro[ii+1].dl) then
begin
if (tt_s.sh>=trebro[ii].sh) and (tt_s.sh<=trebro[ii+1].sh) and
(tt_s.dl>=trebro[ii].dl) and (tt_s.dl<=trebro[ii+1].dl) then
begin
count_s:=count_s+1;
attrib_r:=True;
end;
end
else
begin
if (tt_s.sh>=trebro[ii].sh) and (tt_s.sh<=trebro[ii+1].sh) and
(tt_s.dl<=trebro[ii].dl) and (tt_s.dl>=trebro[ii+1].dl) then
begin
count_s:=count_s+1;
attrib_r:=True;
end;
end;
end
else
begin
if (trebro[ii].dl<=trebro[ii+1].dl) then
begin
if (tt_s.sh<=trebro[ii].sh) and (tt_s.sh>=trebro[ii+1].sh) and
(tt_s.dl>=trebro[ii].dl) and (tt_s.dl<=trebro[ii+1].dl) then
begin
count_s:=count_s+1;
attrib_r:=True;
end;
end
else
begin
if (tt_s.sh<=trebro[ii].sh) and (tt_s.sh>=trebro[ii+1].sh) and
(tt_s.dl<=trebro[ii].dl) and (tt_s.dl>=trebro[ii+1].dl) then
begin
count_s:=count_s+1;
attrib_r:=True;
end;
end;
end;
//åñëè ðàññìàòðèâàåìàÿ òî÷êà è åñòü òî÷êà ïåðåñå÷åíèÿ ñ ðåáðîì
if (abs(tt_s.sh-tt_temp.sh)<0.001) and (abs(tt_s.dl-tt_temp.dl)<0.001) and (Attrib_r=True) then
begin
Attr.Add(IntToStr(kod_z));
count_s:=-1;
break;
end;
end;{if attrib}
end;{åñëè òî÷êà íå íà ðåáðå }
end;{(a1*b2-a2*b1<>0) and (a1*b2-a2*b1<>0)}
end;{for i}
if (count_s=-1) then break;
if (ii=length(trebro)-1) then break;
end;{for j}
if ((count_s mod 2)<>0) and (count_s>-1)
then Attr.Add(IntToStr(kod_z));
end;
← →
bushmen © (2004-06-22 14:45) [57]>для некоторых записей, для которых был поиск в таблице mySQL неверно количество Area.Count
Что-то я не вижу поиска в базе mysql
← →
Fishka (2004-06-22 14:45) [58]
function TForm1.Koef_abc(tt1,tt2 : tochka; var a,b,c : Real): Boolean;
begin
if (tt2.sh=tt1.sh) and (tt2.dl=tt1.dl) then
begin
result:=False;
exit;
end;
// if (tt2.sh<>tt1.sh) then
if (abs(tt2.sh-tt1.sh)>0.0001) then
begin
// if (tt2.dl<>tt1.dl) then
if (abs(tt2.dl-tt1.dl)>0.001) then
begin
try
a:=0-1/(tt2.dl-tt1.dl);
b:=1/(tt2.sh-tt1.sh);
c:=tt1.dl/(tt2.dl-tt1.dl)-tt1.sh/(tt2.sh-tt1.sh);
except
ShowMessage(FloatToStr(a));
end;
end
else
begin
a:=1;
b:=0;
c:=0-tt1.dl;
end;
end
else
begin
a:=0;
b:=1;
c:=0-tt1.sh;
end;
result:=True;
end;
function TForm1.Midd_r(tt,tt1,tt2 : tochka; var tt_mid:tochka; var a_m,b_m,c_m : Real): Boolean;
begin
//íàéäåì êîîðäèíàòû ñåðåäèíû ðåáðà
tt_mid.sh:=(tt1.sh+tt2.sh)/2;
tt_mid.dl:=(tt1.dl+tt2.dl)/2;
//1-ÿ òî÷êà - ïðîâåðÿåìàÿ, 2-ÿ òî÷êà - ñåðåäèíà ðåáðà - èùåì êîýôô. â óð-íèè ïðÿìîé
if Koef_abc(tt,tt_mid,a_m,b_m,c_m)=False then result:=False;
end;
И чем это все может помочь???????????????
← →
Fishka (2004-06-22 14:49) [59]А и поиск поиск не нужен. Простейший запрос к mySQL, и неверно определяется массив Area.
Дело не в запросе,
а см. См. Fishka (22.06.04 09:06) [12] и
3. Неверны свойства ADOQuery (ADQ_my), а именно ...
У меня нет опыта работы с mySQL.
← →
Sandman25 © (2004-06-22 14:55) [60]Если используется MSSQL, а не MySQL, то ADM указывает на ту же БД, что и ADQ, в которой идет транзакция? Возможно, дело в том, что MSSQL "видит" транзакцию, которую не видит MySQL.
← →
Andrick © (2004-06-22 14:58) [61]Не знаю насчет MS SQL, а вот MySQL возвращает в ответ на запрос массив из PChar, а уж никак не String (насколько я понял из всего написанного)
← →
Fishka (2004-06-22 15:01) [62]Sandman25 © (22.06.04 14:55) [60]
Если используется MSSQL, а не MySQL, то ADM указывает на ту же БД, что и ADQ, в которой идет транзакция - да.
Возможно, дело в том, что MSSQL "видит" транзакцию, которую не видит MySQL - а при чем тут неверное формирование массива Area, из-за которого мои проблемы?????????
← →
Sandman25 © (2004-06-22 15:03) [63][62] Fishka (22.06.04 15:01)
Если при формировании "массива" используются результаты запроса через другое соединение, то массив получится другой. Вы же не зря нам писали про "поиск" в MySQL... Или зря?
Попробуйте указать ADM на MSSQL, но в другую БД, и сравните результаты
← →
Andrick © (2004-06-22 15:07) [64]Кстати, ошибка происходит при одновременно открытых и MS SQL, и MySQL, - или нет? Если при одновременно, то Песочный (привет ;))) прав
← →
Sandman25 © (2004-06-22 15:10) [65][64] Andrick © (22.06.04 15:07)
Какой еще песочный... Изучайте американский фольклор, молодой человек :)
PS. Я же не называю Вас "и стог" :)
← →
Fishka (2004-06-22 15:11) [66]Andrick © (22.06.04 14:58) [61]
А я и не использую результат запроса.
Sandman25 © (22.06.04 15:03) [63]
Если при формировании "массива" используются результаты запроса через другое соединение, то массив получится другой. Вы же не зря нам писали про "поиск" в MySQL... Или зря? - Есть поиск, нет его - все равно глюки одни и те же.
Попробуйте указать ADM на MSSQL, но в другую БД, и сравните результаты - о результате сообщу через 5-10 мин.
← →
Andrick © (2004-06-22 15:15) [67]Sandman25 © (22.06.04 15:10) [65]
Предпочитаю программирование
← →
Sandman25 © (2004-06-22 15:20) [68][67] Andrick © (22.06.04 15:15)
И это правильно.
Извините за неудачную шутку.
← →
Fishka (2004-06-22 15:24) [69]Andrick © (22.06.04 15:07) [64]
ошибка происходит при одновременно открытых и MS SQL, и MySQL - да, есть такой момент.
И что мне делать? Закрывать? А почему?
← →
Sandman25 © (2004-06-22 15:24) [70]>Есть поиск, нет его - все равно глюки одни и те же.
Допустим, по алгоритму происходит запись "1", если поле найдено в таблице. Тогда в случае использования MSSQL запись будет найдена и 1 добавится, а в случае использования MySQL запись не будет найдена и поэтому 1 не добавится. При этом не важно, был ли выполнен запрос в MySQL.
← →
Andrick © (2004-06-22 15:41) [71]Во-первых, если ты не используешь результаты запросов MySQL - на хрена пользоваться MySQL?
Во-вторых, проверь, возникает ли ошибка, если отключить Ms SQL. Если возникает, то дело совсем не в бобине.
To Sandman25 > Я не обижаюсь.
← →
Andrick © (2004-06-22 15:45) [72]Ладно, мужики, пошел я от вас. Завтра загляну - посмотрю, как дела
← →
Fishka (2004-06-22 15:45) [73]Fishka (22.06.04 15:24) [69]
Немного не так. И при закрытом mySQL те же глюки. Даже если не делать Open, то те же глюки.
Но если просто закомментировать строку:
ADQ_my.SQL.Add("SELECT * FROM own where id_own<0");
то все нормально.
Sandman25 © (22.06.04 15:24) [70]
Мне не совсем понятно, ведь фактически я ничего не ищу..... И результатом запроса не пользуюсь......
← →
Andrick © (2004-06-22 15:45) [74]Ладно, мужики, пошел я от вас. Завтра загляну - посмотрю, как дела
← →
Sandman25 © (2004-06-22 15:48) [75][73] Fishka (22.06.04 15:45)
Я понимаю, ну а что еще можно придумать... Закрывайте неиспользуемый Connection, тем более, что это разумно.
← →
Andrick © (2004-06-22 15:49) [76]Комп конкретно глючит. А собака, скорее всего, порылась в том, что дельфин, прежде чем отправить запрос базе, всячески его мнет и коряжит, чтоб, значит, он лучше был. Попробуй поставить самым последним символом запроса #0 - мне помогло
← →
Fishka (2004-06-22 15:53) [77]Andrick © (22.06.04 15:41) [71]
1. Был написан запрос к mySQL - и как результат : программа отработала некорректно. Помучавшись неделю, мною был сделан вывод: дело не в тексте ( кстати отлаженном) запроса к mySQL, а просто в его наличии. И даже неважно, делаю я Open или нет. Естественно, после нахождения причины ошибки я восстановлю текст запроса к таблицам mySQL.
2.Если отключить MsSQL или наоборот поменять Connection (т.е. поставить Connection к MSSQL вместо mySQL), то все нормально.
Конечно, выход есть всегда: например, качнуть данные из mySQL во временную таблицу на MSSQL и не пользоваться запросам к mySQL.
Но мне кажется, что это очень-очень нерационально (мягко говоря).
← →
Andrick © (2004-06-22 15:56) [78]Попробуй все-таки поставить нулевой символ. В дельфине с мускулем я без него запросы не составляю.
Ладно, пока. Завтра зайду с утречка - сообщи результат
← →
Fishka (2004-06-22 16:05) [79]Andrick © (22.06.04 15:56) [78]
Попробуй все-таки поставить нулевой символ. В дельфине с мускулем я без него запросы не составляю -
Непонятно, что и куда поставить? У меня нет опыта работы с mySQL.
← →
Sandman25 © (2004-06-22 16:06) [80][79] Fishka (22.06.04 16:05)
SQL.Add("select ... from table1"#0);
← →
Fishka (2004-06-22 16:32) [81]Sandman25 © (22.06.04 16:06) [80]
Все равно глюки :
"SELECT * FROM own where id_own<0#0"
"SELECT * FROM own#0 where id_own<0#0"
← →
Sandman25 © (2004-06-22 17:34) [82][81] Fishka (22.06.04 16:32)
У меня не так. Внимательнее смотрим...
← →
Andrick © (2004-06-23 06:31) [83]"SELECT * FROM own where id_own<0" + #0
← →
Fishka (2004-06-23 09:45) [84]Все равно глюки:
"SELECT own.* FROM own WHERE (((own.id_own)<0))"#0
"SELECT own.* FROM own WHERE (((own.id_own)<0))"+#0
Мне кажется, уже теплее. Проблема в запросе или в свойствах компонента ADOQuery.
← →
Andrick © (2004-06-23 10:35) [85]Как исключение - однажды встретил рекомендацию в особо критических случаях заключать запрос в двойные кавычки. Но как это в реальности воплотить - не знаю.
Кстати, если и при закрытом MySQL те же глюки, то скорее всего, придется пользоваться чем либо одним - или менять способ подключения к базе данных. Попробуй подцепиться MySQL через ADO, а к MS SQL - через BDE. Если глюк пропал - проблема в ADO, иначе... Если есть желание - кинь исходник на мыло, но сразу предепреждаю - возможно, ответа ждать придется пару дней. Только зазипуй
← →
Fishka (2004-06-23 10:56) [86]Andrick © (23.06.04 10:35) [85]
Если есть желание - кинь исходник на мыло
Спасибо за предложение, но исходник просто огромный. Мне жаль Вашего времени.
если и при закрытом MySQL те же глюки - да, те же.
А как поменять способ подключения к базе данных mySQL? Кроме Ado, чем можно пользоваться? (К MSSQL не хотелось бы).
← →
Fishka (2004-06-23 15:53) [87]Ничего не получается.
К mySQL подключаюсь через BDE. DataBase1.Connected:=True стоит на FormCreate. И все равно неверно работает (ошибка в функции Attrib_rebro (неверно формируется массив Area).
Как только убираю DataBase1.Connected:=True, все нормально.
Так что проблема не в тексте запроса. Сейчас нет никаккого запроса.
Но мне нужны данные из таблиц mySQL. Что делать?
← →
Andrick © (2004-06-23 16:35) [88]В общем, лучше кинь. Вдруг да помогу. К тому же, если честно, люблю копаться в чужих программах - ежли автор позволяет.
Кстати, о подключении к MySQL через BDE. У тебя получилось? Какую версию MySQL используешь?
← →
Fishka (2004-06-24 08:53) [89]Версия mySQL 3.2.x.. Вроде получилось через BDE.
Сегодня еще помучаюсь, хочется понять. Но если результата не будет, то кину. Только, куда не знаю.
← →
Andrick © (2004-06-24 15:57) [90]Издеваешься? Наведи мышку на ник - получишь с строке состояния результат
← →
bushmen © (2004-06-24 16:11) [91]>Версия mySQL 3.2.x
А конкретнее?
← →
Fishka (2004-06-25 14:27) [92]Andrick © (24.06.04 15:57) [90]
Зачем так просто? Смотрю анкету - а там email нету.
bushmen © (24.06.04 16:11) [91]
3.23.58
Но проблема решена. Ошибок, а вернее неточностей, много.
Например,if ((tt_s.sh=trebro[ii].sh) and (tt_s.dl=trebro[ii].dl)) or
((tt_s.sh=trebro[ii+1].sh) and (tt_s.dl=trebro[ii+1].dl)) then
неверно отрабатывает после коннекта с mySQL.
Если коннекта с mySQL нет, то например, 84-84=0.
Если коннект с mySQL есть, то например, 84-84=1.13Е-14.
Так что вышеприведенная функция исправлена. Сравнивания реальных чисел между собой нет. Теперь сравниваю только целые.
За советы спасибо Andrick © (ОГРОМНОЕ), Sandman25 ©, bushmen ©, Johnmen ©.
← →
bushmen © (2004-06-25 15:58) [93]>Если коннект с mySQL есть, то например, 84-84=1.13Е-14.
Что-то слабо верится, что Delphi по-разному считает :)))
Мне кажется, что проблема в формате хранения данных в MySQL. Посмотри.
← →
Andrick © (2004-06-25 19:32) [94]Действительно, проблема все-таки в формате данных - он у MySQL и MS SQL очень даже разный, поэтому один и тот же код не приемлем. А мыло - подведи к нику, но не нажимай - в анкете-то как раз мыло не показывается :))
На худой конец, запиши так andrick_@mail.ru
← →
Симафор Лютый (2004-06-25 21:42) [95]Вот и я говорю что фигня какая то, а гендальф говорит, что ножницы.
← →
Симафор Лютый (2004-06-25 21:43) [96]Вот и я говорю что фигня какая то, а Гендальф говорит, что ножницы. Проблема - коаксиалку на витую пару нужно заменить - будет работать точно! Проверено электроникой
Страницы: 1 2 3 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Память: 0.72 MB
Время: 0.04 c