Drupal 7 PDOException - PullRequest
       1

Drupal 7 PDOException

0 голосов
/ 11 августа 2011

Я создал скрипт, который импортирует данные из одной базы данных и помещает их в другую;проблема в том, что он разрывается с сообщением:

PDOException: в hcap_import_do () (строка 215 / mnt / hgfs / docroot / hcapdrupal / site_drupal / public_html / sites / all / modules / custom /hcap / hcap.module).

Код, который следующий:

db_insert('hcap_candidates')->fields(array(
  'id' => $e['old_id'],
  'pic' => $e['logo'],
  'placed' => $e['placed'],
  'title' => $e['title'],
  'name' => $e['name'],
  'interim' => $e['interim'],
  'permanent' => $e['permanent'],
  'birth' => $e['birth'],
  'marital_status' => $e['marital'],
  'adress' => $e['address'],
  'city' => $e['city'],
  'postal' => $e['postal'],
  'phone_home' => $e['phone_home'],
  'phone_work' => $e['phone_work'],
  'phone_mobile' => $e['phone_mobile'],
  'email1' => $e['email1'],
  'email2' => $e['email2'],
  'reg_by' => $e['reg_by'],
  'cand_head' => $e['cand_head'],
  'cand_body' => $e['cand_body'],
  'prominent' => $e['prominent'],
  'broadcast' => $e['broadcast'],
  'cv' => $e['cv'],
  'old_id' => $e['old_id']
))->execute();  // This is line 215.

Кто-нибудь знает, что не так?

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Вы можете использовать блок «try ... catch», чтобы узнать больше об ошибке.Мне нужно больше окружающего кода и структуры таблиц, чтобы понять, почему запрос не выполняется, но синтаксис кажется правильным.

Если вы не уверены, вот что «попробуйте» ...Блок «catch» в PHP выглядит так:

<?php
try {
db_insert('hcap_candidates')
  ->fields(
    array(
      'id' => $e['old_id'],
      'pic' => $e['logo'],
      'placed' => $e['placed'],
      'title' => $e['title'],
      'name' => $e['name'],
      'interim' => $e['interim'],
      'permanent' => $e['permanent'],
      'birth' => $e['birth'],
      'marital_status' => $e['marital'],
      'adress' => $e['address'],
      'city' => $e['city'],
      'postal' => $e['postal'],
      'phone_home' => $e['phone_home'],
      'phone_work' => $e['phone_work'],
      'phone_mobile' => $e['phone_mobile'],
      'email1' => $e['email1'],
      'email2' => $e['email2'],
      'reg_by' => $e['reg_by'],
      'cand_head' => $e['cand_head'],
      'cand_body' => $e['cand_body'],
      'prominent' => $e['prominent'],
      'broadcast' => $e['broadcast'],
      'cv' => $e['cv'],
      'old_id' => $e['old_id'],
    )
  )
  ->execute();
}
catch (PDOException $e) {
  print_r($e->getMessage());
}
?>

Вероятно, существует простая проблема с вашим запросом (нет таблицы с именем hcap_candidates, нет поля в этой таблице с именем marital_status и т. д.).Сообщение об исключении должно рассказать вам все, что вам нужно знать.

Кстати, print_r - это всего лишь один быстрый и грязный способ увидеть вывод в браузере.Вы также можете использовать сторожевой таймер , drupal_set_message ...

0 голосов
/ 11 августа 2011

Я точно не знаю проблему, но убедитесь, что вы выполнили следующие шаги

1 - вы определили 2 базы данных в файле settings.php

2 - вы используете db_set_active ("database2name ");прежде чем вставить свои данные в {database2name}

...