Rails 4迁移:Mysql2 :: Error:数据对于列“ xxxx”而言过长

茨佐兹

这是我的schema.rb

  create_table "users", force: true do |t|
    t.string   "name",       limit: 6
    t.string   "email"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

我为“名称”列设置了限制字符串。

然后,在控制台中:

 user = User.new(name:"1234567890",email:"[email protected]")
 user.save!

它引发了错误:

ActiveRecord::StatementInvalid: Mysql2::Error: Data too long for column 'name' at row 1: INSERT INTO `users` (`created_at`, `email`, `name`, `updated_at`) VALUES ('2014-06-19 15:08:15', '[email protected]', '1234567890', '2014-06-19 15:08:15')

但是,当我切换到rails 3时

我发现它自动截断了字符串“ 1234567890 ”,并将“ 123456 ”正确插入数据库。

是否有任何有关此问题的信息已在导轨4中删除

我应该自己在模型中添加一些截断函数吗?谢谢!

詹姆斯·梅森

您所看到的是MySQL中的差异,而不是Rails。默认情况下,MySQL会截断太长的数据,而不是抛出错误。如果将MySQL设置为strictmode,它将引发错误,而不是默默地截断数据。

对于版本4,Rails默认情况下会打开严格模式这就是为什么您在Rails 3上看到不同的行为的原因。这就是您可能想要的行为。默默地截断数据几乎总是有害的,并且可能导致用户非常困惑的行为。

如果您确实想截断数据,则可以关闭严格模式或使用前置过滤器:

before_save :truncate_username
def truncate_username
  self.username = username.slice(0, 6)
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 4迁移:Mysql2 :: Error:数据对于列“ xxxx”而言过长

来自分类Dev

创建新迁移时,Rails Mysql2::Error 表不存在

来自分类Dev

Rails迁移-Mysql2 :: Error:指定的密钥太长;最大密钥长度为767字节

来自分类Dev

rails 4:Mysql2 :: Error:您的SQL语法有错误

来自分类Dev

MySQL错误1406(22001):数据对于列而言太长

来自分类Dev

Mysql2::Error: Unknown column in where 子句 Rails

来自分类Dev

随机在mysql2中用于Rails 4应用

来自分类Dev

MySQL CSV导入失败-“数据对于第1行的列'air_date'而言太长”

来自分类Dev

ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法删除或更新父行-Rails 4.2.6

来自分类Dev

rails db:migrate rails 中止!Mysql2::Error: Access denied for user 'root'@'localhost' (using password: YES)

来自分类Dev

django social_auth中DataError值对于类型字符变化(16)而言过长

来自分类Dev

Rails Server导致Mysql2错误

来自分类Dev

Ruby on Rails MySQL2 ::错误

来自分类Dev

Rails从mysql2渲染HTML

来自分类Dev

Rails 4:将数据迁移到何处

来自分类Dev

Mysql2 :: Error:尝试获取锁时发现死锁;尝试重新启动事务(Ruby on Rails)

来自分类Dev

Rails数据迁移之谜

来自分类Dev

原则:数据对于列而言太长(由于转义)

来自分类Dev

原则:数据对于列而言太长(由于转义)

来自分类Dev

Rails继承_列迁移

来自分类Dev

Ruby on Rails-无法加载此类文件-mysql2 / 2.2 / mysql2(LoadError)

来自分类Dev

Rails database_url转义mysql2 url passwod

来自分类Dev

Ruby on Rails MySQL数据库迁移中止耙

来自分类Dev

Rails将数据迁移到mysql工作台GUI

来自分类Dev

Rails 4迁移:如何对列进行重新排序

来自分类Dev

Rails 4,迁移以将列的数据类型从daterange更改为tsrange导致PG :: DatatypeMismatch:错误:

来自分类Dev

Mysql2 ::错误:未知列

来自分类Dev

Rails迁移列类型多态

来自分类Dev

Laravel字符串数据,右截断:1406数据对于列而言太长

Related 相关文章

  1. 1

    Rails 4迁移:Mysql2 :: Error:数据对于列“ xxxx”而言过长

  2. 2

    创建新迁移时,Rails Mysql2::Error 表不存在

  3. 3

    Rails迁移-Mysql2 :: Error:指定的密钥太长;最大密钥长度为767字节

  4. 4

    rails 4:Mysql2 :: Error:您的SQL语法有错误

  5. 5

    MySQL错误1406(22001):数据对于列而言太长

  6. 6

    Mysql2::Error: Unknown column in where 子句 Rails

  7. 7

    随机在mysql2中用于Rails 4应用

  8. 8

    MySQL CSV导入失败-“数据对于第1行的列'air_date'而言太长”

  9. 9

    ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法删除或更新父行-Rails 4.2.6

  10. 10

    rails db:migrate rails 中止!Mysql2::Error: Access denied for user 'root'@'localhost' (using password: YES)

  11. 11

    django social_auth中DataError值对于类型字符变化(16)而言过长

  12. 12

    Rails Server导致Mysql2错误

  13. 13

    Ruby on Rails MySQL2 ::错误

  14. 14

    Rails从mysql2渲染HTML

  15. 15

    Rails 4:将数据迁移到何处

  16. 16

    Mysql2 :: Error:尝试获取锁时发现死锁;尝试重新启动事务(Ruby on Rails)

  17. 17

    Rails数据迁移之谜

  18. 18

    原则:数据对于列而言太长(由于转义)

  19. 19

    原则:数据对于列而言太长(由于转义)

  20. 20

    Rails继承_列迁移

  21. 21

    Ruby on Rails-无法加载此类文件-mysql2 / 2.2 / mysql2(LoadError)

  22. 22

    Rails database_url转义mysql2 url passwod

  23. 23

    Ruby on Rails MySQL数据库迁移中止耙

  24. 24

    Rails将数据迁移到mysql工作台GUI

  25. 25

    Rails 4迁移:如何对列进行重新排序

  26. 26

    Rails 4,迁移以将列的数据类型从daterange更改为tsrange导致PG :: DatatypeMismatch:错误:

  27. 27

    Mysql2 ::错误:未知列

  28. 28

    Rails迁移列类型多态

  29. 29

    Laravel字符串数据,右截断:1406数据对于列而言太长

热门标签

归档