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

У меня есть программа, которую я поддерживаю, которая недавно была установлена ​​на машине с 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

Ответы [ 2 ]

1 голос
/ 17 июня 2011

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

0 голосов
/ 15 сентября 2010

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

...