更新:这是关于Rails 4.x并不是Rails 5中的问题.
我有一个Number模型,其中一个number字段是bigint.该schema.rb文件正确地在数据库中创建表结构.

但是,使用该应用程序时,当我创建一个新的数字时,我收到一条错误消息:
/
Error 71731224865的RangeError 超出ActiveRecord :: ConnectionAdapters :: PostgreSQL :: OID :: Integer的范围,限制为4
为什么这个数字字段仍然被视为标准整数而不是bigint?
这似乎与StackOverflow上的其他"超出范围"错误不同,因为它们似乎都无法在数据库中首先将字段定义为bigint.但是,我已经得到了......这似乎是"正在保存"适配器吓坏了.
这是schema.rb中出现的create_table:
create_table "numbers", id: false, force: :cascade do |t|
t.bigint "number", null: false, index: {name: "index_numbers_on_number", unique: true}
t.string "formatted_number"
t.text "description"
t.integer "user_id", null: false, index: {name: "index_numbers_on_userid"}, foreign_key: {name: 'fk_numbers_user_id'}
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Run Code Online (Sandbox Code Playgroud)


更新1:我重新创建了该列,DECIMAL(11,0)希望这是一个临时的解决方法,但是同样的错误也失败了!也许我作为解决方法的唯一选择是VARCHAR(11).
更新2:好的.奇怪的事情正在发生.我现在已经定义了这个字段,VARCHAR(11)所以我可以继续工作......但是也失败了同样的错误.什么? …
通常,处理日期时的最佳做法是将它们存储在UTC中并转换回用户在应用程序层中所期望的任何内容.
这不一定适用于将来的日期,特别是在日期/时间特定于用户时区的情况下.基于当地时间的时间表需要存储当地时间.
在我的情况下,有一个属性,它是一个包含未来事件的START_TIME时间戳,相比于其他一切现在或过去(包括created_at和updated_at时间戳).
该特定字段是用户选择时间的未来事件的时间戳.
对于未来的事件,似乎最好的做法是不存储UTC.
开发人员可以保存用户期望我们保存的内容:停机时间,而不是将时间与时区一起保存.
当用户选择上午10点时,即使由于夏令时用户与UTC的偏移在创建和事件日期之间发生变化,它也需要保持上午10点.
因此,在2016年6月,如果用户在悉尼午夜2017年1月1日创建活动,则该时间戳将作为数据库存储在数据库中2017-01-01 00:00.创建时的偏移量为+10:00,但在事件发生时,它是+11:00 ..除非政府决定在此期间改变它.
同样明智的,我希望我在2016年1月1日午夜在布里斯班创建一个单独的活动,也可以存储为2017-01-01 00:00.我存储时区,即存储Australia/Brisbane在单独的字段中.
我尝试了很多选择但没有成功:
问题,这只会在读取时跳过转换,而不是写入.
self.skip_time_zone_conversion_for_attributes = [:start_time]
Run Code Online (Sandbox Code Playgroud)
config.default_timestamp :local为此,我设置:
配置/ application.rb中
config.active_record.default_timezone = :local
config.time_zone = 'UTC'
Run Code Online (Sandbox Code Playgroud)
应用程序/模型/ event.rb
...
self.skip_time_zone_conversion_for_attributes = [:start_time]
before_save :set_timezone_to_location
after_save :set_timezone_to_default
def set_timezone_to_location
Time.zone = location.timezone
end
def set_timezone_to_default
Time.zone = 'UTC'
end
...
Run Code Online (Sandbox Code Playgroud)
坦率地说,我不确定这是做什么的......但不是我想要的.
我认为它的存在是因为我的布里斯班事件被存储为,2017-01-01 00:00但是当我为悉尼创建一个新事件时,它被存储为2017-01-01 01:00 …
我有一个包含ROWSPAN和COLSPAN的HTML表.
如何使用jQuery找到每个单元格的"可视位置"?
例如,这是我的表的可视化表示,其中每个单元格填充了"视觉位置"算法应返回的内容:(
注意:我只关心其中的单元格<tbody>,列引用可以是整数,而不是字母字符,我只是这样做才能轻松突出问题)
+--+--+--+--+--+
| |A |B |C |D |
+--+--+--+--+--+
|1 |A1|B1 |D1|
+--+--+--+--+ +
|2 |A2 |C2| |
+--+ +--+ +
|3 | |C3| |
+--+--+--+--+--+
|4 |A4|B4|C4|D4|
+--+--+--+--+--+
|XYZ |
+--+--+--+--+--+
Run Code Online (Sandbox Code Playgroud)
我已尝试实现第一个,但是单元格C3的引用是不准确的,因为它没有考虑ROWSPANS.第二个链接可以合并到第一个的解决方案,但我无法弄清楚如何.
我希望将此作为一个函数调用getCellLocation(cell),它将返回一个返回类似于以下位置的关联数组:
function getCellLocation(cell)
{
var row_number = parseInt($(cell).parent().prevAll().length) + 1;
var col_number = 1;
$(cell).prevAll('td').each(function() {
col_number += $(this).attr('colspan') ? parseInt($(this).attr('colspan')) : 1;
});
var location = new Array();
location['row'] = row_number;
location['col'] = col_number;
location['index'] …Run Code Online (Sandbox Code Playgroud) 如何启用MySQL的常规日志以与MAMP一起使用?
我用它在我的Mac上运行Apache,MySQL和PHP,所以我可以通过UI打开/关闭/重启,而不是弄乱默认情况下安装在机器上的Apache或PHP.
在我的Mac上,我尝试在my.cnf文件中设置配置设置,以记录运行到文件的每个SQL查询.当我从终端内运行SHOW VARIABLES命令时,设置似乎已生效,如下面的输出所示.
问题:常规日志文件未填充.
当我实际执行 SQL查询或在MAMP服务器上重新加载从MySQL数据库读取数据的PHP页面时,不会创建或填充常规日志文件.
以下是我设置的my.cnf内容的一部分:
# The MySQL server
[mysqld]
#port = 9999
socket = /Applications/MAMP/tmp/mysql/mysql.sock
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
bind-address = 127.0.0.1
general_log = 1
general_log_file = /Applications/MAMP/logs/mysql_general_sql.log
Run Code Online (Sandbox Code Playgroud)
这是运行SHOW VARIABLES语句的输出的一部分:
mysql> show variables;
+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
| ... …Run Code Online (Sandbox Code Playgroud) 在docker-compose.yml文件中,是否有一种方法可以将服务的放置限制为不仅是管理器节点,而且是领导者管理器节点?
例如,这将限制任何管理节点:
version: '3.5'
services:
my_cool_service:
image: meh
deploy:
placement:
constraints:
- "node.role == manager"
Run Code Online (Sandbox Code Playgroud)
是否有类似的约束提供如下功能:
node.manager_status_leader == yes
Run Code Online (Sandbox Code Playgroud) Teradata有一个有用的视图dbc.tables,可用于查询对象.我用它来查看RequestText视图中的成功,但程序似乎编译有点不同.
当我查看RequestText一个过程(TableKind P)时,我得到的是这样的:
ALTER PROCEDURE '468137'xn.'546321987654321345646556213165468654654654'xn COMPILE /* mydb.procedurename */;
Run Code Online (Sandbox Code Playgroud)
这是对存储在别处的实际RequestText的引用吗?我怎么做到的?
我想实际用SQL查询它,而不是将其转储到文本文件中.
原因是因为我需要对它运行LIKE语句来搜索对特定表名的引用.将它转储到文本文件然后手动搜索文本文件是不方便的.
在MySQL SELECT语句中,派生字段如何利用SELECT列表中另一个字段的值?
例如,运行以下查询时:
SELECT
'tim' AS first_name
,first_name || ' example' AS full_name;
Run Code Online (Sandbox Code Playgroud)
我希望结果如下:
first_name, full_name
tim , tim example
Run Code Online (Sandbox Code Playgroud)
相反,我收到以下错误:
Unknown column 'first_name' in 'field list'.
Run Code Online (Sandbox Code Playgroud)
有没有办法可以引用另一列?
谢谢
Turgs
在Yii中,有没有一种最好的方法来确保用户只能在Yii中查看和访问他们自己的数据?
我认为管理员应该能够看到任何东西,但就目前而言,我稍后会越过那座桥.
谢谢
我有一个 Rails 5.2 应用程序,我正在使用它form_with,它正在生成此 HTML:
<form id="post-0" class="" action="/posts.js" accept-charset="UTF-8" data-remote="true" method="post">
Run Code Online (Sandbox Code Playgroud)
表单成功提交给 PostController 的create操作。
def create
@post = current_user.account.posts.new(post_params)
respond_to do |format|
if @post.save
format.html { redirect_to posts_path, notice: 'Post added.' }
format.js { render :create, status: :created }
else
format.html { render :index }
format.js { render :create, status: :unprocessable_entity }
end
end
end
Run Code Online (Sandbox Code Playgroud)
它是那么渲染JS视图:
应用程序/视图/职位/ create.js.erb
alert('created');
Run Code Online (Sandbox Code Playgroud)
但是,在我的浏览器中,我确实被重定向到http://localhost:3000/posts.js了显示 javascript 代码的位置。意思是,表单提交似乎没有在后台发生。
我本来希望仍然停留在表单所在的页面上,出现一个 Javascript 警报,说“已创建”。
我错过了什么愚蠢的事情吗?在我看来,这一定是form_with我做得不对的事情。
我尝试将其换为, …
每当用户登录我的网站(使用Yii框架构建)时,我希望能够更新last_login_at使用TIMESTAMP 调用的用户模型中的字段.
如何才能做到这一点?
我想actionLogin()在SiteController.php中需要某种类型的编辑.
无限循环被教导为邪恶.有没有好用的?
当意外编码时,CPU达到峰值并且我想象内存也是如此,特别是如果在循环内部分配变量.
如果有很好的用途,那么这些问题是如何防止的?
algorithm ×2
mysql ×2
sql ×2
yii ×2
activerecord ×1
ajax ×1
docker ×1
docker-swarm ×1
html ×1
html-table ×1
javascript ×1
jquery ×1
login ×1
loops ×1
markdown ×1
php ×1
postgresql ×1
security ×1
teradata ×1
textarea ×1
timezone ×1
wmd ×1
wysiwyg ×1