IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.
Модератор: kdv
-
RoloTomasi
- Сообщения: 26
- Зарегистрирован: 11 июн 2005, 19:50
Сообщение
RoloTomasi » 20 июн 2005, 11:49
Ктонить в курсе почему после такого кода созданая база инвалидна?
Код: Выделить всё
FbConnectionStringBuilder cs = new FbConnectionStringBuilder();
cs.DataSource = "localhost";
cs.Database = @"D:\temp\dbm\firebird\janus\janus.fdb";
сs.UserID = "DBADMIN";
cs.Password = "7777777";
cs.Dialect = 3;
cs.ServerType = 1;
FbConnection.CreateDatabase(cs.ConnectionString,16384,false,true);
// block 2
FbConnection con = new FbConnection(cs.ConnectionString);
con.Open();
string [] restrict = {"","",null,"TABLES"};
DataTable dtTables = con.GetSchema("Tables",restrict);
//for(int i =0; i < dtTables.Rows.Count;i++)
//{
//DataRow tRow = dtTables.Rows[i];
//string name = tRow["TABLE_NAME"].ToString();
//}
con.Close();
//
если же заремить блок2 то база создается нормальная и в дальнейшем никаких проблем.
-
Лысый
- Сообщения: 177
- Зарегистрирован: 08 ноя 2004, 08:20
Сообщение
Лысый » 20 июн 2005, 12:22
Где commit? Каждый DDL должен сопровождаться своим commit
-
RoloTomasi
- Сообщения: 26
- Зарегистрирован: 11 июн 2005, 19:50
Сообщение
RoloTomasi » 20 июн 2005, 13:03
CreateDatabase статическая функция и никаких commit-ов, насколько я понимаю не требуется.
Да и в С++ я isc_dsql_execute_immediate юзал без комитов, всё было нормально.
Тебе известен способ создать базу (embedded вариант)
в Net, обяъсни как это можно сделать?
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 20 июн 2005, 18:14
RoloTomasi писал(а):Ктонить в курсе почему после такого кода созданая база инвалидна?
Что значит - инвалидна ?
RoloTomasi писал(а):если же заремить блок2 то база создается нормальная и в дальнейшем никаких проблем.
Если FbConnection.CreateDatabase создаёт коннект, попробуй его закрыть.
А вообще с вопросами по .Net провайдеру лучше
сюда
-
RoloTomasi
- Сообщения: 26
- Зарегистрирован: 11 июн 2005, 19:50
Сообщение
RoloTomasi » 20 июн 2005, 21:01
Инвалидна - не открывается ни чем, IBExpert ругается что что-то с форматом не в порядке. Как я понял если её создать, а затем просто сделать селект из базы, то база портится??? Если же приложение закрыть не делаю выборки, то всё нормально.
За ссылочку спасибо, а то не мог найти их майл на sourceforge.
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 20 июн 2005, 21:46
RoloTomasi писал(а):Инвалидна - не открывается ни чем, IBExpert ругается что что-то с форматом не в порядке
Вот за такие "подробные" сообщения хочеться бить головой об стену. Догадываешься чьей ?

-
RoloTomasi
- Сообщения: 26
- Зарегистрирован: 11 июн 2005, 19:50
Сообщение
RoloTomasi » 22 июн 2005, 01:47
Конект к базе невозможен.
Сообщения следующие:
По списку ошибок NetProvidera:
335544333=internal gds software consistency check ({0})
IBExpert пишет:
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statment.
internal gds software consistency check (cannot find tip page (165))
А голову надо беречь, тем более не свою

-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 22 июн 2005, 12:38
Это пробовал : "если FbConnection.CreateDatabase создаёт коннект, попробуй его закрыть" ?
cannot find tip page (165) - это серьёзно
Можешь определить - новый (второй) коннект берётся из пула или честно создаётся заново ?
-
RoloTomasi
- Сообщения: 26
- Зарегистрирован: 11 июн 2005, 19:50
Сообщение
RoloTomasi » 23 июн 2005, 01:39
База ломается если создается transaction:
Код: Выделить всё
FbConnectionStringBuilder cs = new FbConnectionStringBuilder();
cs.DataSource = "localhost";
cs.Database = @"D:\temp\dbm\firebird\janus\janus.fdb";
сs.UserID = "DBADMIN";
cs.Password = "7777777";
cs.Dialect = 3;
cs.ServerType = 1;
FbConnection.CreateDatabase(cs.ConnectionString,16384,false,true);
// block 2
FbConnection con = new FbConnection(cs.ConnectionString);
con.Open();
FbTransaction trn = con.BeginTransaction();
con.Close();
именно FbTransaction trn = con.BeginTransaction(); играет роковую роль. Во всех остальных случаях(выборка и т.д.) тоже транзакция запускается, implicit. Если просто открыть закрыть конекцию, то всё нормально.
Насколько понял конекция помешается в пул и оттуда юзается затем.
Пытаюсь разобраться в исходниках, как её закрыть сразу после CreateDatabase. И после создания базы там ещё вызывается isc_attach_database.
CreateDatabase коннекцию создает, но помещает её в пул, я к ней доступа не имею. Есть ещё статический метод ClearAllPools но он тоже её не закрывает. Буду копаться в исходниках.
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 23 июн 2005, 10:54
Напиши Карлосу
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 23 июн 2005, 18:32
RoloTomasi писал(а):Сорри, а куда писать?
Гм, я ведь уже говорил:
А вообще с вопросами по .Net провайдеру лучше
сюда
-
RoloTomasi
- Сообщения: 26
- Зарегистрирован: 11 июн 2005, 19:50
Сообщение
RoloTomasi » 23 июн 2005, 19:30
Отправил туда три письма, а в ответ тишина.
На форуме мыло Карлоса показывается не полностью
<carlosga@te...>
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 23 июн 2005, 21:18
RoloTomasi писал(а):Отправил туда три письма, а в ответ тишина.
На форуме мыло Карлоса показывается не полностью
<carlosga@te...>
Я не знаю, чем ты смотришь и пишешь, но
1. Он тебе ответил
Carlos G.A. писал(а):Can you give a try to this with a Thread.Sleep here ??
2. Мыло его нормально показывается
carlosga@telefonica.net
3. Менять имена, да ещё и такие, гм, странные ("iray", "sunika"), у них не принято. Если ты, конечно, хочешь, чтобы к твоим вопросам серьёзно относились
-
RoloTomasi
- Сообщения: 26
- Зарегистрирован: 11 июн 2005, 19:50
Сообщение
RoloTomasi » 24 июн 2005, 00:06
Всё понял, спасибо!
Это не имена, это адреса почтовые. Он просто берет название до собаки и как имя его.
-
RoloTomasi
- Сообщения: 26
- Зарегистрирован: 11 июн 2005, 19:50
Сообщение
RoloTomasi » 28 июн 2005, 21:05
Интересно, вот Карлос мне ответил и говорит, типа сделай то-то.
Как ему отписать в форум о результате?
-
hvlad
- Разработчик Firebird
- Сообщения: 1244
- Зарегистрирован: 21 мар 2005, 10:48
Сообщение
hvlad » 28 июн 2005, 23:13
Наверное с голубиной почтой

-
RoloTomasi
- Сообщения: 26
- Зарегистрирован: 11 июн 2005, 19:50
Сообщение
RoloTomasi » 29 июн 2005, 02:01
hvlad писал(а):Наверное с голубиной почтой

Так и сделал
Написал новое письмо, с темой Re:[на что отвечаю]
Я просто боюсь, что пока разберусь в том как принято,
опять напортачу.
Спасибо тебе за терпение!