У меня есть программа, которую я поддерживал, которая недавно была установлена на машине 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
Проблема заключается в том, что несколько версий драйвера ODBC, uninstalls для более старого/старого, похоже, оставили файлы dll и lib в sysWOW64, как только я удалил обе версии myODBC и удалил файлы из каталога sysWOW64 и переустановил драйвер 3.51.27, ошибка исчезла.
Похоже, что ваше значение по умолчанию '' не применяется к этому полю. Вы пробовали драйвер ODBC MySQL 5.1.7 http://dev.mysql.com/downloads/connector/odbc/5.1.html?