通过某些监视工具(例如Monit)使用心跳消息使应用程序幸存下来是一种常见的设置.如果应用程序正在运行并且一切正常,它将返回"我还活着"消息,如果数据库失败或Web服务器挂起则不返回任何内容或内部服务器错误(HTTP状态代码500)页面.如何模拟数据库失败以在Ruby on Rails中测试此行为?如果可以在测试(Test::Unit或RSpec)本身内为测试目的启用/禁用此功能,那将是很好的.
我不确定我应该为这个问题命名.我刚开始服务器端编程,我需要一些帮助.
到目前为止,我在RoR上阅读的所有教程都涉及创建预定义的表和预定义的字段(id,name,email等).它们使用ActiveRecord作为基类,并且保存到db由超类自动处理.
我正在尝试编程的是允许用户定义的表与字段.所以想想这样的方式.Web UI将有一个空表,用户将命名表,并添加列(字段),然后添加行,然后保存它.我该如何实现?我不是要求细节,只是概述它.正如我所说,我到目前为止阅读的所有教程都处理预定义的表,其中包含预定义ActiveRecord子类的字段.
简而言之,我要问的是,如何在运行时在db中创建表,并向表中添加字段.
希望我很清楚,如果没有,请告诉我,我会尝试详细说明.谢谢.
我有3个这样的表:
电影:
类型:
movieGenres:
电影可以包括许多类型.
我想抓住电影片名,运行时和发行年及其类型.我怎么能在一个查询中做到这一点?
我试着这样做:
SELECT u.movie_title, u.movie_runtime, u.movie_releaseYear, a.genre_name
FROM movieGenres ua
LEFT JOIN movies u ON u.movie_id = ua.movieGenre_filmId
LEFT JOIN genres a ON a.genre_id = ua.movieGenre_genreId
LIMIT 0,10
Run Code Online (Sandbox Code Playgroud)
这返回类似于:
罗宾汉_ 101 _ 2001 _冒险
罗宾汉_ 101 _ 2001 _动作
罗宾汉_ 101 _ 2001 _戏剧
防火墙_ 98 _ 2003 _动作
防火墙_ 98 _ 2003 _剧情
我不想重复我已经知道的信息.我希望它显示如下:
罗宾汉_ 101 _ 2001 _冒险_动作_戏剧
防火墙_ 98 _ 2003 _动作_戏剧 …
我有一个问题,添加索引到附加到主数据库的内存数据库.
1)我从文件中打开数据库(F)
2)附加:memory:(M)数据库
3)在数据库M中创建表
4)将数据从F复制到M
我还想在数据库M中创建一个索引,但不知道该怎么做.此代码创建索引,但在F数据库中:
sQuery = "CREATE INDEX IF NOT EXISTS [INDID] ON [PANEL]([ID] ASC);";
Run Code Online (Sandbox Code Playgroud)
我尝试在表名之前添加名称限定符,如下所示:
sQuery = "CREATE INDEX IF NOT EXISTS [INDID] ON [M.PANEL]([ID] ASC);";
Run Code Online (Sandbox Code Playgroud)
但SQLite返回的消息是main.M.PANEL列不存在.
我能做什么?
可能我提出了一些琐碎的问题,但我想知道SQLite中的表名或字段名是否有限制,尤其是在Android中。我记得,Oracle数据库中存在或仍然存在类似问题。
我可以对hstore列中的值执行聚合查询吗?例如,我想确定商店SUM中的count字段.
我正在尝试将桌面应用程序迁移到rails(也处理相当老式的现有数据库).问题是我在一列中没有唯一的ID,但它是表的三列,保证了记录的唯一性.
鉴于我有三个表:
authors
author_name,
author_letter,
author_nr1,
author_nr2
...
titles
titel_nr,
titel_name,
...
author_titles
titel_nr,
author_letter,
author_nr1,
author_nr2
Run Code Online (Sandbox Code Playgroud)
作者的"主键"包括author_letter,author_nr1,author_nr2 here.
那么我需要一种多列主键来使rails关联工作吗?或者我在这里走向错误的方向?
database ruby-on-rails foreign-keys associations primary-key
这两个查询是否等效(假设表中有不同的/任何类型的数据)?是否有任何情况会导致不同的结果?
查询1:
select * from tablea a
left join tableb b on a.keyacol = b.keybcol
inner join tablec c on c.keyccol = b.keybcol;
Run Code Online (Sandbox Code Playgroud)
查询2:
select * from tablea a
left join (
select b.*, c.* from tableb b
inner join tablec c on c.keyccol = b.keybcol
) sub on a.keyacol = sub.keybcol;
Run Code Online (Sandbox Code Playgroud) 我不确定这是否可行,但在做"丑陋"的方式之前我需要确认:)
因此,"结果"是数据库中的帖子,存储方式如下:
this_rating)和投票数(this_num_votes).该数据成对存储,该表有3列:帖子ID /键/值.它基本上是WordPress表结构.我想要的是取出评分最高的帖子,根据这个公式排序:
br =((avg_num_votes*avg_rating)+(this_num_votes*this_rating))/(avg_num_votes +
this_num_votes)
我偷了这里的形式.
avg_num_votes并且avg_rating是已知变量(它们在每次投票时得到更新),因此不需要计算它们.
这可以用mysql查询完成吗?或者我是否需要获取所有帖子并使用PHP进行排序?
升级到OpenX 2.8.8后,我收到了以下错误:
PEAR Error
DB_DataObject Error: autoload:Could not find class DataObjects_Ext_market_assoc_data using class_location value
PEAR Error
DB_DataObject Error: factory could not find class from ext_market_assoc_data
Run Code Online (Sandbox Code Playgroud)
您能否建议我可以采取哪些措施来解决这些错误或进一步诊断问题?它位于多个页面上,包括显示横幅的页面 - 但不在现场网站上.
TTFN Travis
database ×10
mysql ×2
sqlite ×2
android ×1
associations ×1
foreign-keys ×1
limit ×1
many-to-many ×1
openx ×1
oracle ×1
pear ×1
php ×1
plugins ×1
postgresql ×1
primary-key ×1
ruby ×1
sorting ×1
sql ×1
sql-order-by ×1
testing ×1
unit-testing ×1
upgrade ×1