为什么Rails Active Record迁移在mysql的varchar列上生成COLLATE utf8_bin

2024-01-22

我在 Rails 版本 3.0.10 上运行 jruby。我发现活动记录迁移以某种方式在所有 varchar 列上生成 COLLATE utf8_bin 。
当我表演创建表用户时:

CREATE TABLE `users` (
  `id` int(11) not null AUTO_INCREMENT default NULL,
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin not null default '',
  `remember_created_at` datetime,
  `sign_in_count` int(11) default 0,
  `current_sign_in_at` datetime,
  `last_sign_in_at` datetime,
  `current_sign_in_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin default NULL,
....

任何人都知道为什么以及如何关闭它?


The utf8_bin排序规则用于在区分大小写的模式下通过每个字符的二进制值来比较字符串。使用的字符集或排序规则可能取决于数据库的本地设置。例如对于 MySQL 数据库,您可以通过以下 MySQL 命令检查 MySQL 数据库的排序规则模式

mysql> SELECT COLLATION(VERSION());
+----------------------+
| COLLATION(VERSION()) |
+----------------------+
| utf8_general_ci      |
+----------------------+

..或者使用这个..

mysql> show variables like '%collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+

在你的情况下,这些值之一应该是utf8_bin。数据库的一般值可以在您的配置文件中设置,可能是my.cnf对于MySQL。为了创建具有特定引擎、字符集或排序规则的 MySQL 表,您可以使用迁移选项:

create_table :users, 
        :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci'
        ...

根据文档,表字符集和排序规则 http://dev.mysql.com/doc/refman/5.0/en/charset-table.html是MySQL的扩展,标准SQL中没有这样的东西。

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

为什么Rails Active Record迁移在mysql的varchar列上生成COLLATE utf8_bin 的相关文章

  • 从 Rails 2.3.8 升级到 4.0

    我正在 Rails 2 3 8 上运行一个应用程序 我计划将其升级到 Rails 4 0 RC 版 对我来说最简单的方法是什么 我需要先升级到 Rails 3 x 吗 注意 在我当前的实现中 我使用八哥和雪貂 作为升级的一部分 我也在考虑搬
  • IMAP 和 PHP - 从已发送文件夹和收件箱文件夹中获取所有电子邮件

    我正在尝试获取接收和发送的所有电子邮件 并使用 PHP 将其写入 mySQL 数据库 我使用的主机名是 hostname imap gmail com 993 imap ssl INBOX 它仅引用收件箱 并成功抓取收到的电子邮件 为了抓取
  • 初始化会破坏rails中的布局设置吗?

    在其中一个控制器中 我需要特定的布局 我添加了layout一开始 效果很好 但如果我添加一个initialize某些基于控制器的变量的函数 Rails 似乎只是忽略了layout命令 有人有同样的问题吗 我该如何修复它 class Admi
  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch
  • 将sql查询结果写入mysql中的文件

    我正在尝试使用 mysql 将查询结果写入文件 我在一些地方看到了有关 outfile 构造的一些信息 但似乎这只将文件写入正在运行 MySQL 的机器 在本例中是远程机器 即数据库不在我的本地机器上 或者 我还尝试运行查询并从 mysql
  • DBX 错误:驱动程序无法正确初始化

    我在跑步德尔福XE3 终极版 MySQL 数据库 这是我点击时收到的错误Test Connection 作为回应 我在 xampp 目录中找到了 libmysql 库 并将其复制到我的 System32 目录中 但这是行不通的 此消息指的是
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • 日常 MySQL(部分和过滤)复制的最佳实践?

    我有一个相当大的数据库 有超过 40 个表 我只需要复制几个表 5 并且每个表也被过滤 我正在寻找一些复制这些数据的最佳实践 每天就足够了 我可以只选择几个表并为每个表包含一些 WHERE 子句 我正在考虑为每个表启动 mysqldump
  • 从 Rails Helper 返回多个标签的最佳方法是什么?

    我想创建一个隐藏字段并在一个助手中创建一个链接 然后将两者输出到我的 erb 应该输出结果 link to something a path form hidden field something tableize value gt som
  • Rails 4 与 MailCatcher 和 Devise gems

    我有一个带有 gem Devise 的应用程序 我需要通过电子邮件确认注册 在配置 环境 rb我添加了这个 ActionMailer Base delivery method smtp ActionMailer Base smtp sett
  • 如何查找所有mysql表之间的所有关系?

    如何找到MySQL所有表之间的所有关系 例如 如果我想知道大约有 100 个表的数据库中表的关系 有什么办法知道这个吗 从编程角度来说 更好的方法是从以下位置收集数据 INFORMATION SCHEMA KEY COLUMN USAGE表
  • Ruby on Rails link_to 与 put 方法

    我是 Rails 新手 我正在尝试使用 link to 帮助程序创建一个发出 PUT 请求而不是 GET 请求的链接 具体来说 我正在尝试创建一个链接 从管理员面板激活我的应用程序中的用户帐户 我正在使用 Rails 3 0 5 我的rou
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • 设计和自定义 Rails 用户 URL

    我目前正在使用 Rails 3 2 5 和最新的 devise gem 目前用户可以访问他们的个人资料页面 example com users john doe 我想删除网址的用户部分 因此网址将是example com john doe
  • Rails 4 - 如何在开发中使用 sqlite3 以及在生产中使用 PostgreSQL 和 Heroku

    我正在尝试部署到 Heroku 但不能 因为默认的 sqlite3 服务器仍然存在 检测到 Heroku 不支持 sqlite3 gem https devcenter heroku com articles sqlite3 https d
  • 如何在 Rails 3 中查看用户的实时活动?

    我想做的是让我的管理员用户能够实时 通过一些 AJAX jQuery 功能 看到我的用户正在做什么 我该如何去做呢 我认为它与会话活动有关 并且我已经开始将会话保存到数据库 而不是 cookie 但一般来说 我如何获取该信息并实时解析它 我
  • Rails:验证字符串的最小和最大长度,但允许其为空白

    我有一个想要验证的字段 我希望该字段能够留空 但如果用户输入数据 我希望它采用某种格式 目前我在模型中使用以下验证 但这不允许用户将其留空 validates length of foo maximum gt 5 validates len
  • 为什么每个方法需要将其循环的值分配给变量?

    在 Rails 上工作 发现我对 Rails 的理解缺乏知识each method 不知道为什么each方法需要变量 message h2 h2 不确定为什么每个方法都需要变量 message 事实并非如此require它 你完全可以忽略它
  • 如何在保存父对象时确保子对象有效?

    假设我有两堂课 class User attr accessible name has one address validates name presence gt true validates associated address end

随机推荐

  • 如何在 flutter web 中检测用户位置并显示地址

    我的 flutter web 应用程序的地理位置和地理编码不起作用 我在该站点的一些答案后进行编码 以检测用户的位置 显示地址并将地址信息传递到下一页 我做了2页 在我的 地理定位 页面上 我制作了 2 个按钮 我想在用户单击第一个按钮时显
  • 为什么 PySide/PyQt 中使用了如此多的 super?

    简短版本 tl dr 我正在学习PySide 大多数在线教程都使用super初始化 UI 元素 这很重要 即更具可扩展性 还是一个品味问题 澄清 正如我在详细版本中更清楚地说明的那样 这不是另一个询问何时使用的通用线程super 这之前已经
  • Perl:替换二进制内容

    我需要用 Perl 中的一些其他内容 文本或二进制 替换二进制内容 如果内容是文本 我可以使用 s 来替换内容 my txt tomturbo txt s t T g TomTurbo 但如果内容是二进制的 那就不起作用了 有没有简单的方法
  • 如何在 Windows Azure VM 上启用声音

    我想使用 Windows Azure 虚拟机作为开发机器 我想在该机器上启用声音 以便听到事件声音 错误 警告等 并收听来自 last fm 的音乐 Azure 虚拟机可以有声音吗 我试过 http www wikihow com Hear
  • 从片段调用 setHasOptionsMenu(true) 会导致多次调用 Activity 中的 onCreateOptionsMenu

    我有一个简单的Activity其中包含一个ViewPager 我正在尝试将一些菜单项添加到我的菜单中Fragments 但是我遇到了一些奇怪的行为 呼叫 setHasOptionsMenu true 从我的片段结果到封闭的活动onCreat
  • 通过外部网站上传图片到gravatar个人资料

    我想知道是否可以创建一个上传功能 通过我自己的网站将图片上传到头像网站 是的 这是可能的 看http en gravatar com site implement xmlrpc http en gravatar com site imple
  • 更好的设计,可以将数据传递到其他 ng-view 并将其保留在控制器之间

    我开始使用 AngularJS 进行开发 我很困惑这是否是在我的部分视图之间传递数据的正确设计 现在我有一个加载程序页面 我可以在其中执行一些请求 function PeopleController scope http location
  • Javascript (D3) - 日期比较返回 NaN

    我正在使用 d3 并尝试比较数组中的日期 我想得到它的最小值和最大值 以下是我的数据集 var data date 2016 07 19 close 185697 89 date 2016 07 20 close 185697 89 dat
  • 检查窗口是否在后台 Tkinter

    所以 我正在尝试制作一个应用程序tkinter 我刚刚开始学习这个模块的工作原理 在我的应用程序中 我有一个根窗口和一个子 顶级 窗口 并且我将子窗口设置为始终位于顶部 当我最小化根窗口时 子窗口也会最小化 因为我已经定义了该条件 我的问题
  • Spring Boot:从 HTTP 重定向到 HTTPS 会导致 PUT 方法出现 405 错误

    我有一个与此非常相似的问题 重定向 Post 方法 HTTP gt HTTPS HTTP 状态 405 Spring boot https stackoverflow com questions 42108498 redirect post
  • 在 Go 中设置 SQL 连接的 TCP 超时

    当我使用 VPN 连接到数据库 使用标准 go sql 库 并且 VPN 接口关闭时 当我尝试执行 SQL 查询时 无论接口是否同时打开 都会出现 75 秒超时 我想将此超时减少到某个合理的时间 这样在这种情况下我的应用程序就不会被冻结 7
  • MPI 中对 cout 的“原子”调用

    我感兴趣的是 OpenMPI 中是否有命令或技术可以进行原子调用来写入 stdout 或者就此而言 任何流 我注意到 在 MPI 程序执行期间 写入 cout 或其他流 的调用可能会变得混乱 因为每个过程可能会在到达代码的某个部分时进行写入
  • 同步 XML 架构验证? .NET 3.5

    我知道我可以使用如下回调方法根据模式验证 xml 但是有没有一种方法可以同步执行而不是事件驱动 我想到的一种方法是设置一个类成员布尔标志 IsValidated false 然后调用 xml Validate ValidationEvent
  • Firebase 用户 UID 与身份验证 UID 不匹配

    我是 Firebase 的新手 我正在使用react redux firebase 但不确定这是否与这个问题相关 我在使用这些标准身份验证规则时遇到问题 rules users uid read uid auth uid write uid
  • 导入游戏.request

    我在用着Android Studio并尝试将 Google Play 游戏服务导入我的应用程序 已导入库中的 BaseGameUtils 文件夹 现在 GameHelper 类中的以下行出现错误 import com google andr
  • HornetQ 核心 API 和 JMS

    我有几个关于 HornetQ 的问题 HornetQ 核心 API 和 JMS API 之间有什么区别 使用其中之一有什么优点或缺点吗 如果我使用核心 API 然后我决定这样做 这是真的吗 更改我的消息传递总线 比如说 ActiveMQ 然
  • 使用字典中的键反转多个值

    我对 Python 和整体编程还很陌生 所以请耐心等待 我有一本字典 Male Female Eunuch 作为值和这些作为键的不同名称 Persons Hodor Male Tyrion Male Theon Male Arya Fema
  • 更改实时 MySQL 数据库上的字符集

    我目前在 MySQL 5 1 x 数据库中有一堆使用 latin1 字符集的表 问题是 我们最近有一群用户尝试使用 UTF 8 编码输入文本 这似乎破坏了一切 盲目更新表的字符集是否安全 对于这种情况 有哪些最佳实践 除了显然备份所有内容之
  • 使用 local.xml 从顶部菜单中删除链接

    有谁知道如何使用 local xml 从顶部菜单中删除链接 默认的 checkout xml 中有
  • 为什么Rails Active Record迁移在mysql的varchar列上生成COLLATE utf8_bin

    我在 Rails 版本 3 0 10 上运行 jruby 我发现活动记录迁移以某种方式在所有 varchar 列上生成 COLLATE utf8 bin 当我表演创建表用户时 CREATE TABLE users id int 11 not