Tag: mysql

如何在Rails中创建“即将到来的生日”模块?

我有一个表“users”,其列为“date_of_birth”(日期,月份,年份为DATE格式)。 在前端,我需要列出5个即将到来的生日。 花了很长时间试图弄清楚这个逻辑……还浏览了谷歌里所有可能没有运气的文章。 有任何建议如何在RoR中做到这一点? 谢谢!

多个纬度/经度点的半径

我有一个程序,它将lat / long点数组作为输入。 我需要对该数组执行检查以确保所有点都在某个半径范围内。 因此,例如,我允许的最大半径是100英里。 给定一个lat / long数组(来自MySQL数据库,可能是10个点可能是10000)我需要弄清楚它们是否都适合半径为100英里的圆。 有点难过如何处理这个问题。 任何帮助将不胜感激。

如何在Rails迁移中添加检查约束?

我需要在我的Rails应用程序中的现有表中添加一个新的整数列。 该列只能有值1,2,3,所以我想在表/列中添加一个检查约束。 如何在Rails迁移中指定此约束?

迁移创建表引发Mysql2 ::错误:表不存在

我用以下内容编写了一个迁移: class CreateTableSomeTable < ActiveRecord::Migration[5.1] def change create_table :some_tables do |t| t.references :user, foreign_key: true t.references :author, references: :user, foreign_key: true t.text :summary end end end 这是一个创建数据库表的基本迁移。 但是:当我运行rails db:migrate一条非常奇怪的错误消息会中止迁移: Mysql2 ::错误:表’my_database.some_tables’不存在:显示来自’some_tables’的完整字段 就好像错误说它无法创建表,因为表确实存在,这没有意义。 我看过并试过的事情: 审查了database.yml,这似乎很好。 什么都没有改变,我最近运行其他迁移就好了(虽然没有创建数据库表的迁移) 运行bundle以确保安装了所有gem 删除了schema.rb文件,用另一个副本中的数据重新创建了数据库,然后运行了rake db:schema:dump来重新创建schema.rb文件。 我试图再次运行迁移,但仍然遇到同样的错误。 我使用rails 5.1.1以及mysql2 0.4.6 关于如何让迁移运行的任何提示?

为什么Rails忽略(伪)嵌套事务中的回滚?

根据文档ActiveRecord :: Transactions :: ClassMethods ,非新嵌套事务将忽略回滚。 来自文档: User.transaction do User.create(username: ‘Kotori’) User.transaction do User.create(username: ‘Nemu’) raise ActiveRecord::Rollback end end raise ActiveRecord::Rollback被忽略,因为它在子事务中(或者更确切地说,它仍然在父事务中而不是它自己的事务中)。 我不明白为什么两个都会忽略回滚调用? 我可以看到,因为子’事务’实际上不是一个事务,它不会回滚’Nemu’块,但为什么它不会触发父事件的回滚? 子事务是否以某种方式隐藏了回滚? 换句话说,为什么似乎无法从嵌套子项中回滚父事务?

耙子流产了! 未初始化的常量Mysql2

Goksel-Eryigits-Mac-mini:blog geryit$ rake db:migrate –trace (in /Users/geryit/Sites/blog) ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:migrate rake aborted! Client does not support authentication protocol requested by server; consider upgrading MySQL client /Users/geryit/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/1.8/mysql.rb:453:in `read’ /Users/geryit/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/1.8/mysql.rb:130:in `real_connect’ /Users/geryit/.rvm/gems/ruby-1.8.7-p330/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb:600:in `connect’ /Users/geryit/.rvm/gems/ruby-1.8.7-p330/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb:164:in `initialize . . . database.yml的 development: adapter: mysql encoding: utf8 database: test […]

无法在Mac OS X上安装mysql gem

我使用http://dev.mysql.com/downloads/mysql中的安装程序安装了MySQL服务器。 然后,正如几个指南中所解释的那样,我想用以下命令安装mysql gem。 sudo gem install mysql 这不起作用,并给出以下输出。 Building native extensions. This could take a while… ERROR: Error installing mysql: ERROR: Failed to build gem native extension. /Users/luzi/.rvm/rubies/ruby-1.9.3-p429/bin/ruby extconf.rb –with-mysql-dir=/usr/local/mysql/ checking for mysql_ssl_set()… *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log […]

如何处理数据以避免MySQL“错误的字符串值”错误?

我正在尝试使用Rake任务将一些遗留数据从MS Access迁移到MySQL。 我正在使用Ruby 1.8.6开发Windows XP。 我将Rails的编码设置为database.yml “utf8”。 此外,MySQL的默认字符集是utf8。 99%的数据都很好,但是我偶尔会得到一个列值,它会给我一个像这样的错误: Mysql::Error: Incorrect string value: ‘\x92 Comm…’ for column ‘name’ at row 1: INSERT INTO `organizations` ( […] ) VALUES(‘Lawyers’ Committee’, […] ) 看起来给MySQL带来麻烦的事情就是“律师”一词中的“s”之后的撇号。 这是另一个…… Mysql::Error: Incorrect string value: ‘\x99 aoc’ for column ‘department’ at row 1: INSERT INTO `addresses` […] ‘TRInfo™ aoc’ [….] 看起来它在“TRInfo”之后对“TM”感到窒息。 是否有任何Ruby或Rails方法可以运行数据来清除MySQL将要阻塞的任何字符? 理想情况下,用更可口的字符替换它们会很棒 […]

在Ruby中读取CSV的最佳方法。 FasterCSV?

我有一个CSV文件,我想用Ruby读取并创建Ruby对象以插入带有Active Record的MySQL数据库。 最好的方法是什么? 我看到两个明确的选项: FasterCSV和Ruby核心CSV 。 哪个更好? 我错过了更好的选择吗? 编辑:Gareth说使用FasterCSV,那么使用FasterCSV读取CSV文件的最佳方法是什么? 查看文档,我看到称为parse , foreach , read , open ……它说foreach “是作为读取CSV文件的主要界面。” 所以,我想我应该使用那个?

尝试在Windows,RubyMine IDE中使用Ruby on Rails的LoadError

尝试从RubyMine运行简单的Ruby on Rails应用程序时出现以下错误: C:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mingw32/lib/mysql2/mysql2.rb:2:in `require’: 126: The specified module could not be found. C:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6-x86-mingw32/lib/mysql2/1.9/mysql2.so (LoadError) 问题是,那个文件实际上就在那里。 此外,我运行’bundle install’,将mysql与项目相关联,以及我能找到的其他所有内容。 在网上有一些建议,libmysql.dll需要在特定的目录中 – 但没有迹象表明获取该特定文件。 有谁知道如何解决这个问题? 谢谢!