PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Kouki
Отправлено: 11 Июля, 2011 - 17:53:00
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Помогите создать базу данных Firebird средствами PHP. Да, знаю, что проще ibexpert'ом сделать, но нужно именно в PHP. Пробовал делать по аналогии с мускулом:

$host="localhost";
$user="SYSDBA";
$pass="masterkey";
$DB = "lphp";
$dbh = ibase_connect($host, $user, $pass) or die ("Невозможно подключиться");
$query = "CREATE DATABASE '$DB'";
ibase_query($dbh, $query) or die ("Сбой при создании БД: " . ibase_errmsg());

Естественно он не видит файл localhost. Так к чему подключаться, если никакой базы не создано?
 
 Top
Champion Супермодератор
Отправлено: 11 Июля, 2011 - 18:15:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




А если указать полный путь? Например /path/to/file.fdb или localhost:path/to/dbfile.fdb
(Добавление)
А блин, сначала ж приконнектиться к чему-то надо... действительно интересно
(Добавление)
Как вариант - можно приконнектиться к чему-то уже существующему, а потом выполнить CREATE DATABASE, либо использовать системный вызовом isql и скормить ему скрипт, создающий БД
 
 Top
Kouki
Отправлено: 11 Июля, 2011 - 18:39:09
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Подсоединяться к существующей бд нельзя по заданию.
Может в хост чего прописать? С мускулом же все работает.
 
 Top
Champion Супермодератор
Отправлено: 11 Июля, 2011 - 18:44:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




http://tech.groups.yahoo.com/group/firebird-php/message/622 пишет:
CREATE DATABASE is supported by ibase_query() if you pass IBASE_CREATE
as link argument. [eg. ibase_query(IBASE_CREATE, "CREATE DATABASE ...")]
In this case, the return value will be a link resource that can be used
in subsequent query()/prepare() calls.


вот что нашел
 
 Top
Kouki
Отправлено: 16 Июля, 2011 - 13:03:41
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Champion
Спасибо, помогло.

ibase_query(IBASE_CREATE, "CREATE DATABASE 'base.fdb' USER 'SYSDBA' PASSWORD 'masterkey'");

(Отредактировано автором: 16 Июля, 2011 - 13:12:30)

 
 Top
Kouki
Отправлено: 24 Июля, 2011 - 14:18:34
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Возникла необходимость для учебных целей в скрипте создания базы данных сразу же ее и удалить (перед этим проведя с ней некие манипуляции и вывести что-нибудь). Самый элементарный способ не работает:

<?php
$user = "SYSDBA";
$pass = "masterkey";
$name = "1.fdb";
ibase_query(IBASE_CREATE, "CREATE DATABASE '$name' USER '$user' PASSWORD '$pass'");
$host = "localhost:C:\Program Files\Apache Group\Apache\1.fdb";
$dbh = ibase_connect($host, $user, $pass);
ibase_drop_db($dbh);
?>

Ошибка: lock time-out on wait transaction object C:\PROGRAM FILES\APACHE GROUP\APACHE\1.FDB is in use
С транзакциями не работал пока, так что прошу помощи.

(Отредактировано автором: 24 Июля, 2011 - 14:19:16)

 
 Top
Kouki
Отправлено: 25 Июля, 2011 - 14:48:30
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Ап.
 
 Top
Champion Супермодератор
Отправлено: 25 Июля, 2011 - 16:51:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Champion пишет:
In this case, the return value will be a link resource that can be used in subsequent query()/prepare() calls.
Значит отдельного коннекта не надо. Можно пользоваться тем, что вернет ibase_query.
А если вы делаете второй коннект, то от первого коннекта (вы ведь его не закрывали) остается активная заинтересованная транзакция, и она не дает удалить БД. Я думаю, что в этом дело. Первый коннект надо либо закрыть, либо пользоваться им, вместо создание нового.
 
 Top
Kouki
Отправлено: 25 Июля, 2011 - 21:05:31
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Champion
Спасибо еще раз за помощь.

<?php
$user = "SYSDBA";
$pass = "masterkey";
$name = "1.fdb";
ibase_query(IBASE_CREATE, "CREATE DATABASE '$name' USER '$user' PASSWORD '$pass'");
ibase_drop_db();
?>

<?php
$user = "SYSDBA";
$pass = "masterkey";
$name = "1.fdb";
ibase_query(IBASE_CREATE, "CREATE DATABASE '$name' USER '$user' PASSWORD '$pass'");
ibase_close();
$host = "localhost:C:\Program Files\Apache Group\Apache\1.fdb";
$dbh = ibase_connect($host, $user, $pass);
ibase_drop_db($dbh);
?>

(Отредактировано автором: 25 Июля, 2011 - 21:07:48)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB