不同值的sqlalchemy mssql转换错误,然后查询参数
Sqlalchemy mssql conversion error for different value then query parameters
我正在使用 sqlalchemy orm。我通过将行重要性从 "VARCHAR" 更改为 "TINYINT" 更新了我的 table(在 db 和 orm 中)。出于某种原因,每当我尝试添加一行时,它都会使用 'critical' 而不是新的数值。
'critical' 是以前使用的值之一,我已将其替换为 TINYINT,现在使用枚举。我检查了整个源代码,甚至没有使用 'critical' 这个词。
甚至错误堆栈中的参数也不匹配。似乎插入了一些旧值。我也在另一台机器上试过 运行ning 以防万一,同样的事情发生了。
(pyodbc.DataError) ('22018', "[22018] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Conversion failed when converting the varchar value 'critical' to data type tinyint. (245) (SQLExecDirectW)")
[SQL: INSERT INTO fulladb.packages (id, version, rdate, importance, metadata, source_url, pkgdata) OUTPUT inserted.id VALUES (?, ?, ?, ?, ?, ?, ?)]
[parameters: ('858D60AF-A5E9-43F1-B19A-2D9CD10C0115', '1.1.1', datetime.datetime(2001, 1, 1, 0, 0), 0, '[]', 'http://www.quack.com', '{}')]
编辑:
我在 SQL Server Managment Studio 中尝试了 运行ning 更多查询。每当我 运行 插入查询时,我将 VARCHAR 插入 [importance] 列,它正确地指出它无法将我输入的字符串(在错误中打印正确的字符串)转换为 tinyint。
如果我插入一个 TINYINT(正确的)值,那么默认情况下它总是说它不能转换 VARCHAR 字符串 'critical'。出于某种原因,它会忽略 int 并始终默认为 VARCHAR。
编辑2:
消除任何误解。我在一个空的测试数据库上执行此操作,我删除了所有 table 并创建了新的。这不是通过更新完成的。
您尝试更新数据库中的架构似乎没有成功。由于 'critical' 是以前使用的值之一,数据库拒绝了模式更新,因为它不知道如何处理 VARCHAR 到 TINYINT 的转换。请在命令行或使用其他工具检查数据库以确保架构已实际更新。
我正在使用 sqlalchemy orm。我通过将行重要性从 "VARCHAR" 更改为 "TINYINT" 更新了我的 table(在 db 和 orm 中)。出于某种原因,每当我尝试添加一行时,它都会使用 'critical' 而不是新的数值。
'critical' 是以前使用的值之一,我已将其替换为 TINYINT,现在使用枚举。我检查了整个源代码,甚至没有使用 'critical' 这个词。
甚至错误堆栈中的参数也不匹配。似乎插入了一些旧值。我也在另一台机器上试过 运行ning 以防万一,同样的事情发生了。
(pyodbc.DataError) ('22018', "[22018] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Conversion failed when converting the varchar value 'critical' to data type tinyint. (245) (SQLExecDirectW)")
[SQL: INSERT INTO fulladb.packages (id, version, rdate, importance, metadata, source_url, pkgdata) OUTPUT inserted.id VALUES (?, ?, ?, ?, ?, ?, ?)]
[parameters: ('858D60AF-A5E9-43F1-B19A-2D9CD10C0115', '1.1.1', datetime.datetime(2001, 1, 1, 0, 0), 0, '[]', 'http://www.quack.com', '{}')]
编辑: 我在 SQL Server Managment Studio 中尝试了 运行ning 更多查询。每当我 运行 插入查询时,我将 VARCHAR 插入 [importance] 列,它正确地指出它无法将我输入的字符串(在错误中打印正确的字符串)转换为 tinyint。
如果我插入一个 TINYINT(正确的)值,那么默认情况下它总是说它不能转换 VARCHAR 字符串 'critical'。出于某种原因,它会忽略 int 并始终默认为 VARCHAR。
编辑2: 消除任何误解。我在一个空的测试数据库上执行此操作,我删除了所有 table 并创建了新的。这不是通过更新完成的。
您尝试更新数据库中的架构似乎没有成功。由于 'critical' 是以前使用的值之一,数据库拒绝了模式更新,因为它不知道如何处理 VARCHAR 到 TINYINT 的转换。请在命令行或使用其他工具检查数据库以确保架构已实际更新。