我正在使用 sql server 2008 轨道上的jruby 3.2.7 jruby 1.6.7.2(ruby-1.9.2-p312)
下表
create_table "Users", :primary_key => "id" do |t|
t.integer "id", :limit => 19, :default => 1, :null => false
t.string "login", :limit => 80, :null => false
t.binary "password"
end
当我用数据填充表格时,我可以毫无问题地撤回记录。当我尝试保存时,我收到以下错误:
Failure/Error: @user.save!
ActiveRecord::StatementInvalid:
ActiveRecord::JDBCError: Implicit conversion from data type varchar to varbinary is not allowed. Use the CONVERT function to run this query.: INSERT INTO [Users] ( [login], [password]) VALUES ( N'user', '')
答案 0 :(得分:0)
鉴于此
t.binary "password"
和这个
INSERT INTO [Users] ( [login], [password]) VALUES ( N'user', '')
当字段定义为二进制时,INSERT
语句有一个密码字符串。
在SQL Server中,这两种类型不兼容。二进制值指定为0x<bytes>
,即0xAABBCCDD
。
您需要将传递给INSERT
语句的密码值转换为这种格式(可能是散列函数的字节数组输出),或者将表列类型更改为是一个字符串。