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

Ошибка PDO при попытке вставки в iSeries DB2 с php в Linux

У меня были проблемы с попыткой запустить оператор вставки через php в iSeries DB2 через PDO odbc.

Ниже приведен мой php-скрипт:

<?php

$empl_number  = $argv[1];
$empl_estatus = $argv[2];
$empl_lname   = $argv[3];
$empl_fname   = $argv[4];
$empl_user    = $argv[5];

try {

    $sql = "INSERT INTO `USER_PROFILE_AD` (`EMPLOYEE_NUMBER`, `EMPLOYEE_STATUS`, `LAST_NAME`, `FIRST_NAME`, `LDAP_RDN`, `ACTIVE`, `USER_PROFILE`) VALUES (:numb, :stat, :lname, :fname, :usern, :active, :profile)";
    $conn = new PDO("odbc:AS400TST");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare($sql);

    $stmt->bindParam(':numb', $empl_number, PDO::PARAM_INT);
    $stmt->bindParam(':stat', $empl_estatus, PDO::PARAM_STR);
    $stmt->bindParam(':lname', $empl_lname, PDO::PARAM_STR);
    $stmt->bindParam(':fname', $empl_fname, PDO::PARAM_STR);
    $stmt->bindParam(':usern', $empl_user, PDO::PARAM_STR);
    $stmt->bindParam(':active', 0, PDO::PARAM_INT);
    $stmt->bindParam(':profile', NULL, PDO::PARAM_NULL);
    $stmt->execute();

} catch (PDOException $e) {
    echo $e->getMessage();
}

?>

Когда я запускаю скрипт через командную строку...

user@server: /usr/bin/php myscript.php 1234 AC DOE JOHN JOHN.DOE

Я получаю следующее сообщение об ошибке:

SQLSTATE[42000]: Syntax error or access violation: 0 [IBM][System i Access ODBC Driver]Statement violates access rule: Connection is set to read only. (SQLPrepare[0] at /builddir/build/BUILD/php-5.4.16/ext/pdo_odbc/odbc_driver.c:206)

Я дважды проверил с разработчиком iSeries, и имя пользователя, которое я использую, имеет полный доступ к базе данных/таблице/и т. д.

Не могли бы вы помочь мне понять, почему вставка не работает?

ПРИМЕЧАНИЯ:

  • Подключение работает нормально.

  • Операторы «выбрать» работают просто отлично.

  • в /etc/odbc.ini CommitMode = 2

Заранее спасибо,

ЭГМВЭБ


Ответы:


1

Согласно моим исследованиям, эта ошибка обычно вызывается обновлением или PTF, примененным к ОС IBM i. Исправление заключается в получении текущего драйвера ODBC. Ваш администратор должен быть в состоянии помочь с этим.

29.08.2017
  • jmarkmurphy, спасибо за ответ. Я уточню у нашего администратора iSeries. 29.08.2017

  • 2

    Я нашел решение -

    Для справки на случай, если у кого-то еще возникнет эта проблема...

    Следующая статья: https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzatv/rzatvodbcman.htm

    Объясняет настройки, которые необходимо выполнить в файле odbc.ini.

    ...

    DefaultLibraries = QGPL
    Database =
    ConnectionType = 0
    CommitMode = 2
    ExtendedDynamic = 0
    DefaultPkgLibrary = QGPL
    DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
    AllowDataCompression = 1
    LibraryView = 0
    AllowUnsupportedChar = 0
    ForceTranslation = 0
    Trace = 0
    

    ... Не забудьте изменить "QGPL" в обоих параметрах на свой

    Настроил параметры и все заработало.

    Спасибо вам всем!!

    ЭГМВЭБ

    29.08.2017

    3

    Таблица не заносится в журнал, если выбрана работа. Вам нужно будет начать ведение журнала таблицы, чтобы добавить изменения и удалить их. АКД не работает.

    на ас400.

    STRJRNPF ...

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

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

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

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

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

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

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

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