草庐IT

ActiveRecord

全部标签

mysql - 如果sql中不存在则插入记录,重复的列名

我想要一个解决方案来插入一条记录,如果它不存在,所以我在这里搜索并找到了一个解决方案,但我还有另一个问题INSERTINTOclosed_answers(question_id,subject_id)SELECT*FROM(SELECT2,2)AStmpWHERENOTEXISTS(SELECTquestion_idFROMclosed_answersWHEREquestion_id=2ANDsubject_id=2)LIMIT1输出是#1060-Duplicatecolumnname'2'如果我使用任何2个不相同的数字,它会起作用,但当2个数字相同时就会出现问题

php - 在 Codeigniter 中将事件记录与标准 SQL 查询混合

现在我正在使用事件记录访问数据库。但是,附加功能要求我使用标准SQL查询。是否可以在同一查询中同时使用事件记录和标准sql查询?例如:$this->db->select(...)->from(...)->.....->query(WHERECASE..........);在标准SQL查询中,我想使用带有CASE的WHERE子句。如果不在标准SQL中重写整个查询,这可能吗?事件记录查询非常复杂 最佳答案 据我所知,您无法像您尝试的那样组合标准SQL和事件记录。但是,如果需要,您可以手动编写WHERE字符串,然后将其提交给ActiveR

mysql - MySQL 复合索引中键的高性能排序(WRT Rails 多态关联和 STI)

之前,我问过thisquestionaboutcompoundindexesonpolymorphicforeignkeysinActiveRecord.我的问题的基础是我的理解,即索引应该基于您的列的基数,并且Rails的STI类型和多态_type列的基数通常很低。承认我的问题的答案是正确的——索引高基数_id列和低基数_type列是有值(value)的,因为它们一起具有高基数——我的下一个问题是:你应该如何订购复合索引?[owner_id,owner_type]的索引将具有较高基数的字段放在第一位,而[owner_type,owner_id]将具有较高基数的字段放在第二位。使用前一

mysql - 从字段中剥离空格后,Ruby/ActiveRecord 未检测到更改

我正在尝试使用mysql2适配器和ActiveRecord从MySQL数据库的各个字段中删除空格和回车符:ruby1.9.3p194事件记录3.2.8MySQL5.5.28foo=People.find(1)foo.name=>"\rJohnJones"foo.name.lstrip!=>"JohnJones"foo.name=>"JohnJones"foo.changes=>{}#nochangesdetectedtofoo.name???foo.save=>true#butdoesnothingtodatabase.如果我这样做:foo.name="JohnJones"foo.sa

mysql - Codeigniter:我可以在我的 Controller 函数中使用 $this->db->trans_start() 和 trans_complete 吗?

我有多个模型函数在事务完成之前执行。例如$this->model_A->insert('....');$this->model_C->insert('....');$this->model_D->insert('....');$this->model_E->update('....');使用trans_start()和trans_complete()的最佳方式是什么,以便万一插入或更新过程在任何时候中断,事务可以相应地回滚或提交...有没有可能我可以在我的Controller中使用下面这些行?像这样?$this->db->trans_start();$this->model_A->in

mysql - Rails 创建 schema_migrations - Mysql2::Error: Specified key was too long

我正在使用Rails3.2.6和Mysql6.0.9(但我在MySQL5.2.25上有完全相同的错误)当我创建新数据库(rakedb:create)然后当我尝试加载模式(rakeschema:load)时,我得到这个错误:Mysql2::Error:Specifiedkeywastoolong;maxkeylengthis767bytes:CREATEUNIQUEINDEX`unique_schema_migrations`ON`schema_migrations`(`version`)经过数小时的研究,我找到了这些解决方案:1。将MySQL变量innodb_large_prefix更

MySQL 5.7.9、Rails 3.2、mysql2 0.3.20

我在升级到MySQL5.7.9(通过brew在OSX10.11ElCapitan上安装)后遇到问题:我所有基于Rails3.2.*的旧版应用程序都停止工作。请注意,我将使用一个新应用程序作为示例,但我需要具有旧数据库的旧应用程序,而不是新应用程序。$rvmuse2.1.5$rails_3.2.22_newr32-mysql2-test-dmysql$railsgeneratemodelProductname:stringdescription:textinvokeactive_record/Users/user/.rvm/gems/ruby-2.1.5@global/gems/bund

mysql - 如何使用 rails 运行简单的 MYSQL 查询

我想使用rails运行一个简单的MYSQL查询Selectmovie-title,movie-directorfrommovingorderbyratingdesclimit5;我不想要所有的开销来创建模型。我只想运行查询。执行此操作的最佳方法是什么?我什至无法连接这是我Controller的代码ActiveRecord::Base.establish_connection({:adapter=>"mysql2",:host=>"some-rds.amazon.com",:username=>"root",:password=>"root",:database=>"blah"})这会产

mysql - #<ActiveRecord::ConnectionAdapters::MysqlAdapter 的未定义方法 `explain'

我是RubyonRails的新手,但我已经学习了一些教程并且对自己的方法有了一些了解。我已经生成了一些脚手架并将数据插入到MySql数据库中。导航到index.html.erb时,我收到标题中的错误Controller正在执行索引defindex@beers=Beer.allrespond_todo|format|format.html#index.html.erbformat.json{render:json=>@beers}endend并将其作为结构Beer:id,brewer_id,name,price,score,color,brew_type,create_at,update

mysql - ActiveRecord/Rails 中的多列外键/关联

我有徽章(有点像StackOverflow)。它们中的一些可以附加到可标记的东西上(例如,一个帖子的>X评论的徽章附加到帖子上)。几乎所有都有多个等级(例如>20、>100、>200),并且每个badgeablex徽章类型只能有一个等级(=badgeset_id)。为了更容易地执行每个徽章一个级别的约束,我希望徽章通过两列外键指定它们的徽章-badgeset_id和level-而不是通过主键(badge_id),尽管徽章也有一个标准的主键。在代码中:classBadge:destroy#integer:badgeset_id,levelvalidates_uniqueness_of:b