Форум: "Базы";
Текущий архив: 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