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

0

У меня есть программа, которую я поддерживал, которая недавно была установлена ​​на машине Windows 7. Все работает, но в последнее время эта машина начала получать следующую ошибку при использовании метода recordset.update после изменения полей я получил следующую ошибку.

-2147467259 ([MySQL] [драйвер ODBC 3.51] [mysqld-4.0.18-nt] Столбец "fd_number" не может быть нулевым)

Таблица 'fd_number' выглядит следующим образом:

CREATE TABLE `bookguide` (
`author` varchar(100) NOT NULL default '',
`title` varchar(100) NOT NULL default '',
`isbn` varchar(13) NOT NULL default '',
`whls` decimal(10,2) NOT NULL default '0.0000',
`oldwhls` decimal(10,2) NOT NULL default '0.0000',
`fd_number` varchar(100) NOT NULL default '',
KEY `isbn` (`isbn`)
) TYPE=MyISAM; 

Код, который изменяет эту таблицу, выглядит следующим образом:

780     Do While Not txtstream.AtEndOfStream
790         Line = txtstream.ReadLine

800         rs.addNew
            'tempwhole = Mid$(line, 2, 9) + Mid$(line, 119, 1)
810         author = Mid$(Line, 10, 15)
820         author = Replace(author, "'", "")
830         author = Replace(author, ",", "")
840         title = Mid$(Line, 25, 70)
850         title = Replace(title, "'", "")
860         title = Replace(title, ",", "")
            'tempisbn = Mid$(tempwhole, 2, 8)
870         rs.fields("isbn").Value = Replace(Trim$(Mid$(Line, 95, 13)), "-", "")
880         rs.fields("author").Value = author
890        rs.fields("title").Value = title
900        rs.fields("whls").Value = Val(Mid$(Line, 139, 5))    
910        rs.Update
920    Loop

Это всего лишь один пример того, где это происходит, Есть, скорее всего, тысячи обновлений/вставок, сделанных таким образом через всю программу.

Я попытался повторно установить драйвер MySQL ODBC 3.51 (3.51.27) несколько раз, в том числе используя более старую версию (3.51.06), которая устраняет проблему ADO, но вводит ошибку, которая говорит что-то о влиянии Драйвер ODBC не поддерживает запрашиваемые свойства в этом разделе кода сразу после указанного цикла.

940    rs.Open "UPDATE bookguide SET oldwhls = whls, whls = 0",conn
  • 0
    Поэтому после добавления процедуры, которая перебирает набор записей и присваивает пустые строки столбцам объекта, я получаю ту же ошибку, что и ODBC 3.51.06 Driver. Раньше мне никогда не приходилось разделять оператор обновления, но я думаю попробовать это в надежде, что это сработает.
Теги:
odbc
vb6
ado

2 ответа

1
Лучший ответ

Проблема заключается в том, что несколько версий драйвера ODBC, uninstalls для более старого/старого, похоже, оставили файлы dll и lib в sysWOW64, как только я удалил обе версии myODBC и удалил файлы из каталога sysWOW64 и переустановил драйвер 3.51.27, ошибка исчезла.

0

Похоже, что ваше значение по умолчанию '' не применяется к этому полю. Вы пробовали драйвер ODBC MySQL 5.1.7 http://dev.mysql.com/downloads/connector/odbc/5.1.html?

  • 0
    Хорошо, это работало бы, если бы оно поддерживало версию DB 4.0.18, к сожалению, это работает только с 4.1.1 или выше. Я думаю, мне может понадобиться обновить БД, чтобы она заработала.
  • 0
    После обновления Сервера до последней версии MySQL я все еще получаю сообщение об ошибке с использованием ODBC Connector 5.1
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню