За последние 24 часа нас посетили 23004 программиста и 1230 роботов. Сейчас ищет 751 программист ...

Не получается записать данные в базу

Тема в разделе "MSSQL", создана пользователем Ramzay, 16 янв 2015.

  1. Ramzay

    Ramzay Новичок

    С нами с:
    16 янв 2015
    Сообщения:
    11
    Симпатии:
    0
    Подключился к базе через ODBC, выбрал данные - нормально. Пытаюсь в базе создать таблицу - не получается. Ошибка - [Microsoft][Драйвер ODBC Microsoft Access] Невозможно изменение структуры таблицы 'userlist'. База данных доступна только на чтение.,

    Как открыть базу на запись?
    ps Внешней программой база нормально открывается и допускает редактирование.

    Код (Text):
    1.  
    2. $conn  = odbc_connect('HRT', '', '', SQL_CUR_USE_DRIVER  );
    3. $rst   = odbc_exec($conn, 'select * from Banks where id<10 order by id');
    4. while($row = odbc_fetch_array($rst))
    5.   {
    6.    echo "Id= ".$row['Id']."    Name=".$row['Name']."<br>";
    7.   }
    8.  
    9.  
    10.  
    11. // в этой строке возникает ошибка
    12. $rst = odbc_exec($conn, 'create table userlist (id int, fio string, name string, sname string, login string, pwd string)');
    13.  
    14.  
    15. odbc_close($conn);
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а ты уверен, что ты "внешней программой" заходишь под тем же юзером, что и в пхп?
     
  3. Ramzay

    Ramzay Новичок

    С нами с:
    16 янв 2015
    Сообщения:
    11
    Симпатии:
    0
    Имя пользователя и пароль прописаны в DSN ( в текущем случае он имеет имя HRT ). Как видно из
    Код (Text):
    1. $conn  = odbc_connect('HRT', '', '', SQL_CUR_USE_DRIVER  );
    в php логин не указывается. Внешняя программа тоже запрашивает логин, который не вводится и берется из DSN. В базе пользователь всего один - root.

    Такое впечатление, что где-то в PHP есть настройки ODBC. Как подтверждение тому, когда внешняя программа подключена к базе, тогда PHP к ней подключится не может, требует монопольного режима. Хотя две внешних программы свободно подключаются к базе.

    Похоже, что PHP переопределят настройки, которые прописаны в DSN.
    Во внешней программе я вижу настройки ODBC (кроме тех, которые прописаны в DSN), а вот где увидеть эти настройки в PHP?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Игорь не знает =( не работал с виндовой БД
     
  5. Ramzay

    Ramzay Новичок

    С нами с:
    16 янв 2015
    Сообщения:
    11
    Симпатии:
    0
    В документации нашел предопределенную константу SQL_CONCUR_READ_ONLY. Что она обозначает в документации написать забыли. В ходе выполнения скрипта выяснилось, что значение этой константы 1. Оно это или нет - неизвестно. http://php.ru/manual/uodbc.constants.html