FB NetProvider: Создание базы

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
RoloTomasi
Сообщения: 26
Зарегистрирован: 11 июн 2005, 19:50

FB NetProvider: Создание базы

Сообщение 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

Re: FB NetProvider: Создание базы

Сообщение 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 ругается что что-то с форматом не в порядке
Вот за такие "подробные" сообщения хочеться бить головой об стену. Догадываешься чьей ? :twisted:

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))
А голову надо беречь, тем более не свою :wink:

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

Напиши Карлосу

RoloTomasi
Сообщения: 26
Зарегистрирован: 11 июн 2005, 19:50

Сообщение RoloTomasi » 23 июн 2005, 13:55

Сорри, а куда писать?

RoloTomasi
Сообщения: 26
Зарегистрирован: 11 июн 2005, 19:50

Сообщение RoloTomasi » 23 июн 2005, 18:18

Я там ещё несколь меленьких багов нашел.

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 » 24 июн 2005, 00:17

Кстати Sleep не помогает.

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 писал(а):Наверное с голубиной почтой ;)
Так и сделал :wink:

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

Спасибо тебе за терпение!

Ответить