Ruby on Rails - 表情符号未保存在 MySQL 中

2024-03-24

我正在开发一个 Rails 应用程序,用户可以将照片上传到他们的个人资料中。每张照片都有一个标题,该标题应该支持表情符号。尽管将表的编码更改为utf8mb4并修改数据库.yml当我尝试保存标题中带有表情符号的照片时,MySQL 返回错误“字符串值不正确”。

该应用程序运行在 Rails 5.0.0.1 和 Ruby 2.3.0 上,MySQL 运行在版本 5.7.16 上。

迁移文件:

class CreateUserPhotos < ActiveRecord::Migration[5.0]
  def change
    create_table :user_photos do |t|
      t.string  :title
      t.string  :filename, null: false
      t.integer :visibility, null: false, default: 0
      t.belongs_to :user, foreign_key: true, index: true

      t.timestamps
    end

    reversible do |dir|
      dir.up do
        execute "ALTER TABLE `user_photos` CHANGE `title` `title` VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
      end

      dir.down do
        execute "ALTER TABLE `user_photos` CHANGE `title` `title` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;"
      end
    end
  end
end

数据库.yml 文件:

production:
  adapter: mysql2
  encoding: utf8mb4
  reconnect: false
  database: app_db
  pool: 5
  username: app_user
  password: app_password
  host: localhost
  socket: /var/run/mysqld/mysqld.sock
  collation: utf8mb4_unicode_ci

尝试将表的排序规则设置为utf8mb4_bin代替utf8mb4_unicode_ci:

ALTER TABLE user_photos CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

还有改变collation财产价值在database.yml

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails - 表情符号未保存在 MySQL 中 的相关文章

随机推荐

  • 如何更改 Flutter 中的 Slider 标签颜色?

    Flutter 中可以更改 Slider 标签颜色吗 的构造函数中没有这个字段Slider class 根据 Flutter api 使用 valueIndicatorColor 这是 SliderThemeData 的属性 正如这里提到的
  • 当用户通过后退按钮到达时重新加载页面

    我有一个通用错误页面 任何已处理的错误都会重定向到该页面 我有一个管理页面 当用户调用错误时 用户会被带到错误页面 点击错误页面的后退按钮会导致管理页面加载不正确 所以我需要的是一种当我从错误页面返回时重新加载管理页面的方法 我尝试在管理页
  • 验证 htaccess 重写规则中的 utf-8

    我使用重写规则验证包含 utf 8 字符的 url RewriteRule a z 2 a z0 9 1 256 print 1 256 index php 语言 1 categories 2 get query 3 大 get query
  • VLOOKUP 和插值

    我正在尝试检查表中的特定数据 如果找到该数据 它将显示该数据 我用 VLOOKUP 做到了这一点 但现在如果数据不在表中 我想在两组数据之间进行插值 但我不知道该怎么做 所以我想要实现的是检查表中是否有数字 如果不是则需要进行插值 Exap
  • Android:中心启动屏幕图像

    我有一个带有启动屏幕的应用程序 启动屏幕在小型设备上看起来不错 但在大型平板电脑 模拟器 上看起来很糟糕 所以我把背景改成了wrap content 但它看起来与屏幕的一侧对齐 有人可以告诉我一种将背景图像居中的方法吗 这是我的splash
  • SublimeLinter ESLint 找不到插件

    在 Sublime Text Editor 3 x 中编辑 javascript 文件时 出现错误 Oops Something went wrong ESLint 6 0 1 ESLint couldn t find the plugin
  • 访问验证管道中的请求对象

    我正在尝试访问Request object从一个内Validation Pipe in nestjs 为了验证某些字段的唯一性 我需要ID UUID提供的参数PUT PATCH请求 数据结构本身不可用 任何想法 目前 根本不可能在 a 中访
  • Qt——将事件传递给多个对象?

    我基本上有3层 Window gt Scene gt View 每个人都需要处理一个mouseMove事件不妨碍其他人 不过 似乎只有最小的孩子才能参加该活动 我希望我可以处理该事件然后致电event gt ignore 将事件传递回堆栈
  • 如何处理 Google Cloud Functions 中的机密?

    这里的常见做法是什么 好像没有提供工具gcloud 我现在正在从本地计算机部署功能 因此我可以对秘密进行硬编码 但这似乎不合适 另外 CI CD 怎么样 在这种情况下 我需要将秘密作为环境变量传递 这甚至可能吗 您可以使用秘密经理 http
  • 代码格式化:如何将多行代码与特殊字符对齐?

    IDEA 或其插件之一能够将代码与特殊字符对齐吗 我的意思是这样代码 Map name gt Peter age gt 27 company gt Foobar 变换为 Map name gt Peter age gt 27 company
  • 是否有任何回调或任何东西(事件或nodeInfo中的任何参数)来知道辅助功能服务(TalkBack)已完成阅读?

    我有一个应用程序要求在列表视图中宣布文本 列表视图项在运行时添加 我必须一一宣布 我在谷歌和android文档中搜索 但我无法到达那里 请帮助我 如何知道无障碍服务读完文本 谢谢 简单的答案 不要这样做 这是愚蠢的 只需使用您可用的辅助功能
  • 如果是十进制值,则转换为两位小数并且将点分隔值转换为逗号分隔

    我目前的值如下所示 30 32 5 如果存在任何小数 如第二个示例 如何将它们转换为具有两位小数 并且将点分隔符替换为逗号 转换后 上面的数字将如下所示 30 32 50 Try var num 32 5 num num toFixed 2
  • 从另一个路由调用 hapi 路由

    我对 HapiJS 还很陌生 我正在构建一个服务 其中有两条路线 route 1 和 route 2 都使用插件架构 我已将两者注册为我的清单文件中的插件 我想从 route2 调用 route1 因此 route2 取决于 route1
  • 嵌套事务-回滚场景

    A con begin B con rollback con commit B con begin con commit 在上面的代码中 我在 A 处开始一个新的数据库事务 它成功执行了一些事务 之后B 开始执行 并且它也成功执行了一些事务
  • 在头文件中使用声明

    我一直在寻找有关使用的一些说明使用声明在头文件中 我正在四处搜索 但无法完全得到我正在寻找的答案 到目前为止我的研究得出的结论是 将它们用于非全局的范围是好的 而命名空间指令则不好 我明白 至少我希望如此 所以在我的例子中我使用shared
  • 如何获取到 CGPath 的距离以进行命中测试?

    我有一个打开的 CGPath UIBezierPath 我想检测用户是否触摸它 即某个点是否在距路径一定距离内 路径是开放的 即直线 曲线 而不是形状 它可以包含直线和曲线元素 如何获得到路径的距离来进行命中测试 CGPath UIBezi
  • 如何等待matplotlib动画结束?

    考虑直接取自 Matplotlib 文档的以下代码 import numpy as np import matplotlib pyplot as plt import matplotlib animation as animation im
  • CORS 中的 POST/GET 与 PUT/DELETE

    我刚刚读过this https www w3 org Security wiki Same Origin Policy 同源策略允许使用 GET 和 POST 的跨源 HTTP 请求 方法 但拒绝源间 PUT 和 DELETE 请求 PUT
  • 使用VBA调用存储过程

    我正在使用 Access 2010 用户前端和 Microsoft SQL Server 2008 后端工作 Access 中的表都链接到 SQL Server 数据库 我有一个存储过程 它将新值 由参数提供 插入到表中 我之前问过类似的问
  • Ruby on Rails - 表情符号未保存在 MySQL 中

    我正在开发一个 Rails 应用程序 用户可以将照片上传到他们的个人资料中 每张照片都有一个标题 该标题应该支持表情符号 尽管将表的编码更改为utf8mb4并修改数据库 yml当我尝试保存标题中带有表情符号的照片时 MySQL 返回错误 字