Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.04;
Скачать: CL | DM;

Вниз

Ошибка при записи в БД (ругань на ; в конце строки)   Найти похожие ветки 

 
vegarulez ©   (2007-06-23 21:30) [0]

Привет всем мастерам!

У меня какая-то ерунда творится... и не могу понять в чём дело...  
Вообщем есть файл в котором есть sql скрипты... и я хочу их автоматически пропинывать посредством Дэлфа в бд... для этого пользую Zconnection  + ZQuery (ZeosDBO) + база мускл 3.23, на локалхосте...  пытаюсь пропнуть дамп из файлика *.sql (текстовичок)...
так вот... создал дамп одной таблички с данными, там строк 500... так вот в конце каждой строки стоит символ точка с запятой ";"... вообщем всё сделал всё работает...

Создаю дамп ещё одной таблички и запихиваю в текстовичок...
и тут начинаются чудеса...
в той табличке 2 записи... собственно: крит табле... + 1 запись, то бишь 1 инзерт...

так вот моя прожка ругается на то что в конце этих строк стоит ";"...  я в шоке....  убираю ; в конце этих строк... при том что в остальных 500, с которыми раньше всё отладил и всё работало символ ";" остаётся.... запускаю - всё работает...

Я что-то не понимаю... толи у меня моск перегрелся, толи на марсе погода плохая.... потому как строки идентичны, тока записи разные втыкаются... сами данные...

помогите порыться, где собака порылась...

Пример Текстовичка


CREATE TABLE `configs` (`ID` int(10) unsigned NOT NULL auto_increment,`check_id` int(10) unsigned NOT NULL default "0",`mail_id` int(10) unsigned NOT NULL default "0",`up_id` int(11) unsigned NOT NULL default "0", PRIMARY KEY  (`ID`)) TYPE=MyISAM
INSERT INTO `configs` VALUES (1, 391, 3, 0)

CREATE TABLE `Megafon_codes` (`ID` int(10) unsigned NOT NULL auto_increment,`ep_code` varchar(5) NOT NULL default "",`meg_code` char(3) NOT NULL default "",`meg_zone` varchar(32) NOT NULL default "",`meg_area` varchar(50) NOT NULL default "",`fcode` bigint(20) unsigned NOT NULL default "0",`ecode` bigint(20) unsigned NOT NULL default "0", `updt` datetime NOT NULL default "0000-00-00 00:00:00", PRIMARY KEY  (`ID`)) TYPE=MyISAM;
INSERT INTO `Megafon_codes` VALUES (1, "", "925", "Мегафон-Москва", "Область в РФ", 0, 0, "2007-05-14 13:34:12");
INSERT INTO `Megafon_codes` VALUES (2, "", "926", "Мегафон-Москва", "Область в РФ", 0, 0, "2007-05-14 13:34:12");
INSERT INTO `Megafon_codes` VALUES (3, "", "921", "Мегафон-Северо Запад", "Область в РФ", 0, 0, "2007-05-14 13:34:12");
INSERT INTO `Megafon_codes` VALUES (4, "", "922", "Мегафон-Урал", "Область в РФ", 0, 0, "2007-05-14 13:34:12");
INSERT INTO `Megafon_codes` VALUES (5, "", "923", "Мегафон-Сибирь", "Область в РФ", 0, 0, "2007-05-14 13:34:12");
INSERT INTO `Megafon_codes` VALUES (6, "", "922", "Мегафон-Поволжье", "Область в РФ", 0, 0, "2007-05-14 13:34:12");

и т.д.....
INSERT INTO `Megafon_codes` VALUES (...);

Мой Код


...

procedure ReadTxt;
var
  f: TextFile;
  num_lines, x: integer;
  s,line: string;

begin
x:=0;
assign(f, "up.sql");
reset(f);
while not eof(f) do
begin
inc(x);
 ReadLn(f, s);
 line:=s;
  with Form1.ZQuery1 do
   Try
    if Active then Close;
     Sql.Text:=s;
     Form1.ZQuery1.ExecSQL();
   except
    on E: Exception do Application.MessageBox(Pchar(E.Message),PChar("Error"), MB_OK);
   End;
 Form1.StatusBar1.Panels[1].Text:=inttostr(x);
 Application.ProcessMessages;
end;

//try

//except on E:Exception do Application.MessageBox(PChar("Error"), Pchar(E.Message), MB_OK);
//End;
close(f);
end;

procedure TForm1.N3Click(Sender: TObject);
begin
ReadTxt();
end;


 
Johnmen ©   (2007-06-24 00:13) [1]

Везде убери ; и забей...


 
Плохиш ©   (2007-06-24 00:48) [2]


> Ошибка при записи в БД (ругань на ";" в конце строки)

А в каком стандарте SQL строка должна оканчиваться ";"?


 
Anatoly Podgoretsky ©   (2007-06-24 13:22) [3]

> Плохиш  (24.06.2007 00:48:02)  [2]

В SQL-72
Если вспомнишь как развивалась техника, которая и сейчас практически такая же - это терминалы, так вот как ты определишь конец запроса без спецсимвола?


 
Плохиш ©   (2007-06-24 16:10) [4]


> Anatoly Podgoretsky ©   (24.06.07 13:22) [3]
> > Плохиш  (24.06.2007 00:48:02)  [2]
>
> В SQL-72

Ну подловил :-)
А в кАмпАнентах стали выполнять по одному запросу...


 
Anatoly Podgoretsky ©   (2007-06-24 16:19) [5]

> Плохиш  (24.06.2007 16:10:04)  [4]

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


 
vegarulez ©   (2007-06-24 19:03) [6]

А попдробнее... плз...
Просто хочу понять , почему 500 запросов проходят успешно, без ругани... а эти 2.... ругань... они же идентичны... практически.... тока другой табл создаётся и другая запись туда инзертится... а так - они идентичны...

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

Логичен  вопрос - почему?...


 
sniknik ©   (2007-06-24 19:40) [7]

> Логичен  вопрос - почему?...
нелогичный ответ...  попробуй имя таблицы  поменять с "configs" на чтонибудь менее похожее на зарезервированное слово. чем гейтс не шутит.


 
Desdechado ©   (2007-06-25 11:11) [8]

Посмотри в своем текстовичке, чем отделены строки между собой (и есть ли разница между "нормальными" строками и "ненормальными").
Я как-то на Оракле сутки бился, пока поймал, что в EXECUTE IMMEDIATE не должно быть символов с кодом #13, допустим только #10.



Страницы: 1 вся ветка

Текущий архив: 2007.11.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
15-1191745953
digger
2007-10-07 12:32
2007.11.04
Проблема с мышами


15-1191579461
Vlad Oshin
2007-10-05 14:17
2007.11.04
шахматы. Белые выиграли?


15-1190822043
Dark Lord
2007-09-26 19:54
2007.11.04
Недостаточно памяти для обработки команды


2-1192047482
неугомонный
2007-10-11 00:18
2007.11.04
Маленькая помощь в скромной задачке :)


2-1190792821
zzzz
2007-09-26 11:47
2007.11.04
Значение null