Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
4-1178095614
NeyroSpace
2007-05-02 12:46
2007.11.04
Как узнать что ползунок ScrollBar дошел до конца прокрутки?


2-1191997824
BOBik
2007-10-10 10:30
2007.11.04
DLL+PID процесса


15-1190625381
Kolan
2007-09-24 13:16
2007.11.04
Почему поля в базах так часто называют по русски?


15-1191197823
Andy BitOff
2007-10-01 04:17
2007.11.04
Реально поймать изменить/дополнить...


1-1187360648
andreoman
2007-08-17 18:24
2007.11.04
уничтожение формы при ее закрытии





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский