Главная страница
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.019 c
2-1192041920
NiGGa
2007-10-10 22:45
2007.11.04
Delphi7 и поиск ошибок


5-1162640276
ratas
2006-11-04 14:37
2007.11.04
Новый компонент на основе TTrackBar


2-1192389486
alikon1
2007-10-14 23:18
2007.11.04
Помогите со связанными таблицами


2-1192213444
Neo
2007-10-12 22:24
2007.11.04
Как оптимизировать поиск по БД?


2-1191930542
ффф
2007-10-09 15:49
2007.11.04
фастрепорт