Nano Hash - криптовалюты, майнинг, программирование

Подключение к базе данных MySQL с помощью Perl CGI и XAMPP

Я использую Perl CGI для доступа к базе данных MySQL в XAMPP со следующим кодом:

#!/xampp/perl/bin/perl -w

use DBI;

print "Content-type:text/html\r\n\r\n";

$database = "mydb";
$host = "localhost";
$port = "3306";
$user = "root";
$pw = "";

$dsn = "dbi:mysql:$database:$host:$port";

print "Trying to connect <br />";
$connect = DBI->connect($dsn, $user, $pw, {RaiseError=>1});

if (defined $connect) {
    print "Preparing query <br />";
}

$query = "SELECT * FROM reference WHERE ID = 1742031";
$query_handle = $connect->prepare($query);

$query_handle->execute();

$query_handle->bind_columns(undef, \$pmid, \$popu, \$loc);

while($query_handle->fetch()) {
   print "$pmid, $popu, $loc <br />";
} 

Однако я не могу распечатать результат на своей веб-странице. Я думаю, что не могу подключиться к базе данных, потому что строка «Подготовка запроса» не печатается. Но я могу подключиться к базе данных и выполнить этот запрос из командной строки mysql. Понятия не имею, в чем может быть проблема.

РЕДАКТИРОВАТЬ: после установки отсутствующего модуля DBD: mysql я получаю новую ошибку: «Не удается подключиться к серверу MySQL на локальном хосте (10061)». Я пробовал следовать предложениям здесь: MYSQL - не могу подключиться к серверу MYSQL на localhost (10061) и вроде все в порядке. У меня запущен mysqld.exe, и я использую mysql как службу. Кроме того, я могу подключиться к базе данных через командную строку mysql, а также через phpMyAdmin, поэтому проблем с привилегиями быть не должно, поскольку у меня есть только учетная запись root.

Пожалуйста, порекомендуйте. Буду благодарен за любую помощь.

24.04.2012

  • Включите RaiseError и посмотрите, что, по словам DBI, пошло не так. 24.04.2012
  • Вы буквально оставили $ pw пустым или просто удалили его здесь? 24.04.2012
  • Он говорит, что не удается найти DBD / mysql.pm в @INC. Как мне установить этот модуль? Я даже в своей программе не использовал! 24.04.2012
  • @pilcrow Когда я смотрю в список доступных драйверов в ppm, там нет DBD-mysql. Есть DBD-CSV, ODBC, Oracle и SQLite. Откуда мне взять этот модуль mysql? 24.04.2012
  • @goldilocks Я еще не установил пароль для базы данных, так как я просто тестировал его сам. Это имеет значение? 24.04.2012
  • 'Как мне установить этот модуль? Я даже в своей программе не использовал! » - Да, вы сделали: $ dsn = dbi: mysql: $ database: $ host: $ port; 24.04.2012
  • @ user828647: возможно, нет 24.04.2012
  • Из FAQ по Perl для переполнения стека: Какой самый простой способ установить отсутствующий модуль Perl? 24.04.2012
  • Ура! Я наконец решил это сам. Похоже, что порт 3306 был заблокирован межсетевым экраном. Следуя предложению здесь, я просто раскомментировал строку, содержащую адрес привязки в файле my.ini в \ xampp \ mysql \ bin ... вот и все !! 25.04.2012

Ответы:


1

Как мне установить этот модуль?

Используйте "cpan" в командной строке:

> cpan 
cpan shell -- CPAN exploration and modules installation (v1.960001)
Enter 'h' for help.

cpan[1]> install DBD::mysql

Если он не установлен, вы можете его скачать:

https://metacpan.org/pod/DBD::mysql

24.04.2012
  • @pilcrow, JoelFan Спасибо за помощь! Я установил модуль DBD: mysql. Однако теперь отображается новая ошибка: не удается подключиться к серверу MySQL на локальном хосте (10061). Что может быть причиной этого? Как я уже сказал, я могу подключиться к базе данных через командную строку mysql. Пожалуйста, помогите мне здесь. 24.04.2012
  • Похоже, этому может быть множество причин. Вы можете начать здесь: stackoverflow.com/questions/119008/ Имейте в виду, что apache не запускается от имени привилегированного пользователя, что может быть или не быть проблемой; например, если он не может даже подключиться для аутентификации. 24.04.2012
  • Как заставить apache запускаться от имени привилегированного пользователя? 24.04.2012
  • Я могу получить доступ к своей базе данных через phpMyAdmin, если это нужно 24.04.2012
  • Как заставить apache запускаться от имени привилегированного пользователя? - нет. Для этого есть причина, и если вы хотите изучить материал XAMPP, вам нужно оставаться в рамках. Процесс apache должен иметь доступ к серверу mysql от имени любого пользователя, от имени которого он работает (фактически, после запуска он переключается с root на что-то еще, кто именно должен быть в конфигурации). 25.04.2012
  • спасибо за информацию ... В любом случае проблему я решил. Пожалуйста, посмотрите мой последний комментарий к моему вопросу. 25.04.2012

  • 2

    Чтобы подключиться к базе данных MySQL с помощью DBI, используйте

    $dsn = "dbi:mysql:$database;host=$host;port=$port";
    

    localhost и порт 3306 являются значениями по умолчанию, поэтому вы можете не указывать эти части.

    25.04.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..