Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.156.250] |
|
Сообщ.
#1
,
|
|
|
Столкнулся с проблемой подключения к БД. Я делал так:
Создал Database и в свойстве DatabaseName указал путь к папке с БД mysql . ( Например localhost:G:/usr/local/mysql5/data/vocabulary ). В свойстве Username указал localhost, в Userpassword пусто. Потом в свойстве DriverName указал mysql. После этого создал компоненты DataSource и Table . Короче, я этот пример брал со справки VCL, только указал свою базу. В итоге когда я запускаю, у меня появляется сообщение: Fatal error: Call to undefined function mysql_connect() in C:\Program Files\CodeGear\Delphi for PHP\2.0\vcl\adodb\drivers\adodb-mysql.inc.php on line 363 В чём может быть причина неработоспособности данного примера? Эта тема была разделена из темы "Delphi for PHP" |
Сообщ.
#2
,
|
|
|
gabin а нормальный способ конекта уже отменили?
и насколько я помню то такой извратный способ используется для конекта через ado (например к access) а я не помню подключается ли адо к мускулю, хотя зачем если можно нормально подключится да даже если и можна то точно путь к базе не понадобится. так как тойже ado нужно будет общатся с серваком |
Сообщ.
#3
,
|
|
|
Цитата gabin а нормальный способ конекта уже отменили? Нормальный это какой? Если мне необходимо использовать DBGrid, то откуда она будет ресурсы брать, DataSource т.е. ? Вы имеете ввиду, что не надо создавать компонент Database ? Цитата да даже если и можна то точно путь к базе не понадобится А как же тогда указывать путь к базе? |
Сообщ.
#4
,
|
|
|
указываешь айпишник (или localhost если на локальной машине)
задаешь имя базы. (не путь а имя) логин и пароль. конектишся. Добавлено http://www.qadram.com/vcl4php/index.php?ac=2000 например глянь этот пример http://www.qadram.com/vcl4php/samples/Data%20Aware/dbgrid.tar.gz |
Сообщ.
#5
,
|
|
|
Цитата например глянь этот пример http://www.qadram.com/vcl4php/samples/Data...e/dbgrid.tar.gz Результат такой: Error setting property (DBGrid::Font), doesn't exists Fatal error: Call to undefined method DBGrid::getFont() in C:\Program Files\CodeGear\Delphi for PHP\2.0\vcl\classes.inc.php on line 420 Результат Ajax.Database аналогичен предыдущему посту - Fatal error: Call to undefined function mysql_connect() in C:\Program Files\CodeGear\Delphi for PHP\2.0\vcl\adodb\drivers\adodb-mysql.inc.php on line 363 Запускает ли Delphi4php свой mysql сервер или его нужно запускать отдельно? Добавлено Запустил отдельно сервер - всё равно не работает |
Сообщ.
#6
,
|
|
|
Цитата gabin @ Запускает ли Delphi4php свой mysql сервер или его нужно запускать отдельно? в ДелфиФорПхп нет собственного сервера. Добавлено Цитата gabin @ Запустил отдельно сервер - всё равно не работает значит что-то не так заделал |
Сообщ.
#7
,
|
|
|
Цитата gabin @ Запустил отдельно сервер - всё равно не работает без delphiforphp проверь работает ли сервер mysql, есть ли доступ к таблице на сервере mysql свою базу создал ? в базе таблицы есть ? в таблицах данные есть ? |
Сообщ.
#8
,
|
|
|
vicis Да, БД, таблицы , всё есть и создано. Но я запускал не конкретно MySQL сервер, а Denwer, в общем. Со скриптов к базе подключается и т.д. Я думаю , дело не в сервере.
|
Сообщ.
#9
,
|
|
|
если мне не изменяет память денвер позволяет одделдьно запустить мускуль, либо поставь еще один. )))
а еще лудше выбрось пример сюда (сам пример попробовать не смогу так как у меня ремонт и к домашней машинке нет доступа. но тут много других специалистов) |
Сообщ.
#10
,
|
|
|
1. Версия MySQL 5.0.45
2. В модуле ошибка вылетает на процедуре function _connect($argHostname, $argUsername, $argPassword, $argDatabasename) { if (!empty($this->port)) $argHostname .= ":".$this->port; if (ADODB_PHPVER >= 0x4300) $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword, $this->forceNewConnect,$this->clientFlags); else if (ADODB_PHPVER >= 0x4200) $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword, $this->forceNewConnect); else $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword); if ($this->_connectionID === false) return false; if ($argDatabasename) return $this->SelectDB($argDatabasename); return true; } на 5-й строчке 3. MySQL запустил отдельно - ничего не изменилось. 4. Прикрепляю пример и базу. Прикреплённый файлDBsample.zip (10.2 Кбайт, скачиваний: 139) |
Сообщ.
#11
,
|
|
|
Цитата gabin @ Столкнулся с проблемой подключения к БД. Я делал так: Создал Database и в свойстве DatabaseName указал путь к папке с БД mysql . ( Например localhost:G:/usr/local/mysql5/data/vocabulary ). В свойстве Username указал localhost, в Userpassword пусто. Потом в свойстве DriverName указал mysql. После этого создал компоненты DataSource и Table . Короче, я этот пример брал со справки VCL, только указал свою базу. судя по файлам проекта pagecontrolsample (из архива) на форме нет компонент и кода для связи с базой данных что смотреть ? |
Сообщ.
#12
,
|
|
|
Исправил
Прикреплённый файлsample.zip (2.08 Кбайт, скачиваний: 145) |
Сообщ.
#13
,
|
|
|
у меня база не поднялась, т.к. другая версия mysql
создал с таким же именем базу и таблицу CREATE TABLE `word1` ( `id` int(11) default NULL, `name` varchar(20) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; но дело не в базе всё работает если: 1. поставь в dbEMPLOYEE1 свойство UserPassword (если он есть) 2. у тебя в dbEMPLOYEE1 свойство Host = localhost:3306 - проверь что база находится на том же компьютере, если нет поменяй хост или поставь реальный ip или 127.0.0.1 - если есть что то рабочее, что работает с этой базой с твоей машины, то поставь Host как там - проверь что ping localhost работает - проверь что установлены права доступа к сервере mysql для такого пользователя с таким паролем с твоего хоста (проверь утилитой mysql или загляни в таблицу user в базе с именем 'mysql' должна быть запись localhost,root,и здесь хеш пароля) - проверь что брендмауэр не блокирует порт mysql (выключи его временно) - проверь что антивирус не блокирует порт mysql (выключи его временно) 3. поставь в dbEMPLOYEE1 свойство Debug = 0, иначе увидиш не данные , а sql запросы vcl к базе ну и для проверки подключения можно было зарегистрировать свою базу в панели DataExplorer и попробовать открыть её там а потом оттуда можно на фому тащить поля и таблицы... |
Сообщ.
#14
,
|
|
|
Похоже выяснил в чём проблема. Путём сравнения phpinfo() денверовского и дельфийского обнаружил, что в последнем вовсе не подключаются библиотеки БД. Из всех драйверов БД подключен только ODBC. Даже простенький скрипт подключения к БД:
$user="root"; $pass=""; $db="vocabulary"; mysql_connect("localhost",$user,$pass) or die ("Could not connect: ".mysql_error()); @mysql_query("CREATE DATABASE $db"); mysql_select_db($db) or die("Could not select database: ".mysql_error()); вызывает ошибку Call to undefined function mysql_connect(). Всё это несмотря на то, что в php.ini опция extension=php_mysql.dll раскомментирована . Тогда непонятно откуда сервер D4P берёт настройки? Хоть в директории php/ext/ лежат все модули, включая и php_mysql.dll и др. Даже библиотека gd не подключена. Но есть выход чтоб запустить проект: Через Deployment Wizard экспортируем и запускаем к примеру на денвере - тогда работает. vicis, какая у вас версия Delphi for php? |
Сообщ.
#15
,
|
|
|
Цитата gabin @ vicis, какая у вас версия Delphi for php? версия не важна есть и 1-я и 2-я проверял в 1-й важно то, что не надо пользоваться Денверами, а надо поставить себе оригинальный сервер и настроить т.к. на провайдерах никаких денверов нет писал уже об этом раньше как говорится: ленивый платит дважды Цитата gabin @ непонятно откуда сервер D4P берёт настройки думаю отсюда CodeGear\Delphi for PHP\1.0\php при этом он конфигурационный файл по ходу сам настраивает по необходимости (смотрим на дату модификации php.ini - при каждом запуске проекта на выполнение) Цитата gabin @ Но есть выход чтоб запустить проект: Через Deployment Wizard экспортируем и запускаем к примеру на денвере - тогда работает ну вообще то предполагалось что так и делаеш тогда єто не настройка php.ini а просто vcl библиотек не было в указанных путях |