Tag: mysql

无法在Rails应用程序中查找和显示关系模型中的记录列表

我有一个关系模型, has_many :through关联跟踪has_many :through中商店的客户(用户)。 我在使用ShopsController遇到问题并查找给定商店的关系列表,然后显示它们。 我的错误是RecordNotFound, Couldn’t find Relationship with ‘id’=所以我遇到了如何创建和识别关系的问题。 当商店登录时,需要根据user_id找到它们(然后给出current_shop_id )我如何重新设计这些以使关系/展示工作? 在当前版本中,商店通过关系拥有多个用户: class Shop < ActiveRecord::Base has_many :relationships has_many :users, through: :relationships Relationships获取用户的id和shop的id并创建一个关系id: schema.rb create_table “relationships”, force: :cascade do |t| t.integer “user_id” t.integer “shop_id” t.datetime “created_at”, null: false t.datetime “updated_at”, null: false end add_index “relationships”, [“shop_id”], name: “index_relationships_on_shop_id” add_index “relationships”, [“user_id”, “shop_id”], name: […]

生成唯一的跟踪号码

我正在构建一个小型rails应用程序,我需要一种方法来生成跟踪号码,以便客户检查他们的状态。 我想要一些类似于主要航运公司使用的东西,但不是那么久。 我认为12-16个字符很长很好,但我不想要像0000000001那样人们可以输入递增的数字并窥视。 生成唯一数字/字母组合跟踪代码的好方法是什么?

安装mysql的Rails – 安装mysql2时出错:错误:无法构建gem原生扩展

我有一个Rails 3.2.13应用程序,我想部署,但托管服务将需要MySQL,而不是我一直在使用的sqlite。 在从sqlite转换为MySQL的过程中,我不得不安装ruby gem mysql2 ,它在安装时给出了以下错误: 安装mysql2时出错:错误:无法构建gem原生扩展。 我已经尝试了bundle install ,以及gem install mysql2 ,但出现了相同的错误消息。 我知道对许多人sudo apt-get install libmysql-ruby libmysqlclient-dev的解决方案是sudo apt-get install libmysql-ruby libmysqlclient-dev ,但是我在Windows上使用Git Bash,所以我发现了Windows等价物(@ francois对这个问题的回答)。 我使用安装程序安装了MySQL Server 5.6 ,并运行以下命令: gem install mysql2 — ‘–with-mysql-lib=”c:\Program Files\MySQL\MySQL Server 5.6\lib” –with-mysql-include=”c:\Program Files\MySQL\MySQL Server 5.6\include”‘ 根据我的阅读,这应该成功安装’mysql2’ruby gem。 但奇怪的是,我仍然有以下错误: Temporarily enhancing PATH to include DevKit… Building native extensions with: ‘–with-mysql-lib=”c:\Program […]

令人困惑的Ruby / MySQL错误:“无效数据包:序列号不匹配”

我在Heroku上运行了一个带有MySQL的Rails应用程序,这个错误让我感到非常困惑。 如果我尝试选择单行,一切正常,如果我尝试选择少数几个。 但是,如果我尝试选择*,甚至几十/百条记录,我会收到以下错误: ActiveRecord::StatementInvalid: Mysql::ProtocolError: invalid packet: sequence number mismatch(52 != 29(expected)): SELECT `people`.* FROM `people` LIMIT 30 OFFSET 10 /home/slugs/70bb5dad-9387-46c4-935d-cf74e70276a8/mnt/.bundle/gems/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:202:in `log’ /home/slugs/70bb5dad-9387-46c4-935d-cf74e70276a8/mnt/.bundle/gems/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb:289:in `execute’ /home/slugs/70bb5dad-9387-46c4-935d-cf74e70276a8/mnt/.bundle/gems/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb:619:in `select’ /home/slugs/70bb5dad-9387-46c4-935d-cf74e70276a8/mnt/.bundle/gems/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all’ 运行Rails 3,Ruby 1.8.6和MySQL 5.1.42。 我真的在我的智慧结束,所以任何帮助将不胜感激! 大卫

如何处理数据库中的大量记录以供用户授权?

我正在使用Ruby on Rails 3.2.2和MySQL。 我想知道是否“建议”/“希望”存储在与类相关的数据库表中与其实例的每个“ 组合 ”的两个其他类相关的所有记录。 也就是说,我有User和Article模型。 为了存储所有用户文章授权对象,我想实现一个ArticleUserAuthorization模型,以便给定N个用户和M篇文章有N * M ArticleUserAuthorization记录。 这样,我可以声明并使用ActiveRecord::Associations如下: class Article ‘ArticleUserAuthorization’ has_many :users, :through => :user_authorizations end class User ‘ArticleUserAuthorization’ has_many :articles, :through => :article_authorizations end 但是,上面存储所有组合的方法将导致一个包含数十亿数十亿行的大型数据库表! 此外,理想情况下,我计划在创建User或Article对象时创建所有授权记录(也就是说,我计划一次创建所有先前提到的“ 组合 ”,或者更好地,以“延迟”批次创建。无论如何,这个过程会创建其他数十亿的数据库表行!!!)并在销毁时做出反之亦然(通过删除数十亿数据库表行!!!)。 此外,我计划在更新User或Article对象时立即读取和更新这些行。 所以,我的怀疑是: 这种方法“可取”/“可取”吗? 例如,可能会出现什么样的性能问题? 或者,管理/管理具有非常大的数据库表的数据库是一种糟糕的“方式”/“处方”? 我可能/可能/应该如何处理(也许,通过“重新思考”如何以更好的方式处理用户授权)? 注意 :我会使用这种方法,因为,为了在检索User或Article对象时只检索“授权对象”,我认为我需要“primefaces”用户授权规则(即每个用户和文章对象的一个​​用户授权记录)因为系统不是基于“admin”,“registered”等用户组。 因此,我认为ArticleUserAuthorization表的可用性避免了运行与用户授权相关的方法(注意:这些方法涉及一些可能会恶化性能的MySQL查询 – 请参阅我之前针对每个检索的“授权”方法实现的问题)对象通过“简单地”访问/加入ArticleUserAuthorization表,以便仅检索“用户授权”对象。

如何在Mac OS X上安装MySQL gem

在Mac OS X上安装mysql gem需要什么? 我收到错误“无法构建原生扩展”。

缺少mysql.h …(Ruby on Rails,OSX)

我尝试了几个想法……它们都没有用……我只是想安装mysql2作为gem。 我的mysql正在工作,但每次我的系统说,mysql.h都丢失了……有人有想法吗? 现在非常令人沮丧…… 我正在使用osx 10.8.3,ruby 1.9.3,rails 3.2.13和home-brew。 gem install mysql2 -v ‘0.3.11’ Building native extensions. This could take a while… ERROR: Error installing mysql2: ERROR: Failed to build gem native extension. /Users/gadreel/.rvm/rubies/ruby-1.9.3-p429/bin/ruby extconf.rb checking for rb_thread_blocking_region()… yes checking for rb_wait_for_single_fd()… yes checking for mysql.h… no checking for mysql/mysql.h… no —– mysql.h is missing. please check […]

续集永远不会返回utf-8,只是ascii-8bit

我正在尝试连接到这个mysql数据库。 DataMapper以UTF-8很好地获取所有内容,但Sequel总是返回ASCII-8bit中的字符串,这会产生.to_json的错误。 为了让它发挥作用,我尝试了几件事。 Encoding.default_external = Encoding::UTF_8 Encoding.default_internal = Encoding::UTF_8 DB.run ‘set names utf8’ Sequel.mysql ‘db’, (…), :encoding => ‘utf-8’ 我有gem:mysql(2.9.0)(试过没有),mysql2(0.3.11)和续集(3.42.0) 唯一有效的方法是手动强制编码每个字符串,这个字符串比理想情况要差很多。

无法安装do_mysql gem?

我正在尝试在我的Snow Leopord系统Macbook Pro 13上安装do_mysql,但我不断收到此错误: n216-160:~ myself$ sudo gem1.9 install do_mysql Password: Building native extensions. This could take a while… ERROR: Error installing do_mysql: ERROR: Failed to build gem native extension. /opt/local/bin/ruby1.9 extconf.rb checking for mysql_query() in -lmysqlclient… no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries […]

如何配置Rails以实现对远程数据库的无密码访问

注意:这类似于使用Ruby on Rails和SSH来访问远程服务器上的远程MySQL数据库 ,但OP没有提供太多信息,并且给出的唯一答案没有回答这个问题。 背景 我们最近将远程数据库从密码validation切换到基于ssh密钥的validation。 我已经validation我可以通过优雅的Sequel Pro图形数据库客户端使用以下设置访问数据库(某些名称有意混淆): MySQL Host: woofwoof.us-west-2.rds.amazonaws.com Username: bowser Database: canine Port: 3306 SSH Host: salt.woofwoof.com SSH User: guardian SSH Key: ~/.ssh/id_rsa 现在我需要Rails连接到同一个数据库,也使用基于ssh密钥的身份validation。 这个问题 我的config/database.yml文件中包含哪些内容? 到目前为止我有: canine: adapter: mysql2 database: canine username: bowser host: woofwoof.us-west-2.rds.amazonaws.com port: 3306 …但是如何在config/database.yml文件中指定SSH Host , SSH User和SSH Key ? 附加信息 回到我们的数据库进行密码validation时,以下工作: canine: adapter: mysql2 database: canine […]