Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在使用rails / postgres的heroku上,uid字符串被转换为整数

在使用rails / postgres的heroku上,uid字符串被转换为整数
EN

Stack Overflow用户
提问于 2015-10-27 18:58:23
回答 1查看 236关注 0票数 0

有关我是如何在rails应用程序中实现字符串主键的,请参阅以下答案:https://stackoverflow.com/a/1434819/4585520

在迁移中,指定了id: false并添加了一些自定义postgres执行代码(即execute "ALTER TABLE users ADD PRIMARY KEY (uid);",其中uid是一个字符串)。另外,在模型中,self.primary_key = :uid is usedThe结果是我没有'id‘列,只有'uid’列,它们都是字符串。

然而,当我将它部署到Heroku并运行我的种子生成时,由于重复的uids,我得到了错误。我注意到添加的uid值是整数。也许我提供的字符串值正在被转换为整数(我在一个JSON文件中有uid,并且正在导入这些uid,所以没有生成uid),这就解释了为什么它们会产生重复的值。

为什么我的uids整数在heroku上,而它们在开发中正确地作为字符串运行?

EN

回答 1

Stack Overflow用户

发布于 2015-10-27 22:55:03

我不认为这是Heroku的问题,而是迁移如何调整数据库的问题。

我有一个Rails应用程序,它也使用UUID作为主键。下面是我在Heroku Postgres上的数据库:

代码语言:javascript
运行
AI代码解释
复制
   Column   |            Type             |                 Modifiers
------------+-----------------------------+-------------------------------------------
 id         | uuid                        | not null default uuid_generate_v4()
 data       | json                        | not null

这是我的迁移:

代码语言:javascript
运行
AI代码解释
复制
enable_extension 'uuid-ossp'
create_table :notifications, id: :uuid  do |t|
  t.json :data, null: false
end

我猜您的迁移过程中可能没有正确设置列类型。看看您的DB on heroku (heroku pg:psql) -- uid列是使用序列的整数吗?你看到像nextval('users_uid_seq'::regclass)这样的东西了吗?如果是这样,则要求该列为整数。我会尝试以下迁移来修改您的数据库:

代码语言:javascript
运行
AI代码解释
复制
enable_extension 'uuid-ossp'
remove_column :users, :uid 
add_column :users, :uuid, :uuid, default: 'uuid_generate_v4()'

这将:

  1. 确保为PG启用了UUID生成,并删除当前的uid列(只是为了获得正确的uuid列,将类型设置为uuid,并在PG端处理生成。

如果您已经在使用Rails生成UUID(但不推荐),那么只需进入数据库并将列类型从integer改为string即可。

我希望这对你有帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33376353

复制
相关文章
字符串转整数
/* 功能:字符串转整数 日期:2013-06-19 */ #include <stdio.h> #include <stdlib.h> #include <string.h> void StringToInteger(char *str,int *number); int main(void) { char ch[1000]={0}; int num[1000]; printf("请输入一个数字字符串"); gets(ch); StringToInteger(ch,num); prin
WindCoder
2018/09/20
1.6K0
抖音 uid转sec_uid
https://download.csdn.net/download/qq_38154948/87561029
拉灯的小手
2023/03/11
2.1K0
在Debian 9上使用Apache安装Ruby on Rails
Ruby on Rails是一个服务器端Web应用程序框架。它维护了一组策划组件和“约定优于配置”的理念,使得我们可以快速开发应用程序而无需大量样板。本指南将向您展示如何使用Phusion Passenger在您的Linode上部署Rails应用程序。Passenger允许您直接在Apache应用程序中嵌入Rails应用程序,而无需担心FastCGI或复杂的Web服务器代理。
GIStudy
2018/08/28
6K0
Go 字符串转整数
image.png image.png
用户5760343
2019/07/17
1.4K0
Go 字符串转整数
通过Mono 在 Heroku 上运行 .NET 应用
英文原文:Running .NET on Heroku 中文原文:在 Heroku 上运行 .NET 应用 自从加入了Heroku之后,我就想在这个平台上运行.NET程序。现在我很高兴向大家宣布,我们已经有了一个可用的环境reasonably workable Mono buildpack。我的目标是能够在Windows上使用Visual Studio创建一个ASP.NET MVC解决方案去创建一个Heroku的应用程序。它能够使用git命令push Heroku,构建Heroku,应用部署在Mono和X
张善友
2018/01/29
3.3K0
如何使用RVM在FreeBSD 10.1上安装Ruby on Rails
Ruby on Rails,简称RoR,是一个用Ruby编写的非常流行的全栈Web应用程序开发框架。它允许您快速开发符合MVC(模型 - 视图 - 控制器)模式的Web应用程序。
一步
2018/10/10
4.9K0
python json转字符串_在python中将json转换为字符串
一开始我没有清楚地解释我的问题。在python中将json转换为字符串时,请尝试使用str()和json.dumps()。
全栈程序员站长
2022/11/16
11K0
Salesforce的PaaS平台Heroku简介
Heroku是可支持多种编程语言的PAAS平台。现归属于Salesforce。Heroku与2007年开始发展起来,作为最早的云平台之一,在最初的时候只只能ruby编程语言,后来宣布支持Java、Node.js、Scala、Clojure、php以及Python这种语言。
臭豆腐
2019/04/16
7.5K0
Salesforce的PaaS平台Heroku简介
在mac上配置rails开发环境
  首先,安装home-brew,并且升级到最新的版本,值得一提的是home-brew个人感觉比port要好用,安装软件也方便一点。
用户9127725
2022/08/08
1.4K0
leetcode 回文数_字符串转换为整数
原题链接 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。
全栈程序员站长
2022/09/22
5240
字符串转换整数python_将Python字符串转换为Int:如何在Python中将字符串转换为整数
Unlike many other programming languages out there, Python does not implicitly typecast integers (or floats) to strings when you concatenate them to strings.
用户7886150
2021/01/14
4.1K0
字符串转换整数python_将Python字符串转换为Int:如何在Python中将字符串转换为整数
Unlike many other programming languages out there, Python does not implicitly typecast integers (or floats) to strings when you concatenate them to strings.
用户7886150
2021/01/14
4K0
8. 字符串转整数 (atoi)
在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
张伦聪zhangluncong
2022/10/26
7150
Swift 字符串转整数 (atoi) - LeetCode
1、在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
韦弦zhy
2018/09/11
1.7K0
Swift 字符串转整数 (atoi) - LeetCode
枚举值转换(字符串转换为枚举和整数转换为枚举)
上面的方法是区分大小写的,也就是说,如果strA的值为“AA”,则转换失败;如果不需要区分大小写,需要使用下面的方法:
拓荒者IT
2019/09/26
4K0
strtol函数 将字符串转换为相应进制的整数
+----------------+ |   strtol   | +----------------+ i.e. string to long long int strtol(const char *nptr, char **endptr, int base) strtol()会将nptr指向的字符串,根据参数base,按权转化为long int, 然后返回这个值。 参数base的范围为2~36,和0;它决定了字符串以被转换为整数的权值。 可以被转换的合法字符依据base而定,举
marsggbo
2018/01/23
2.8K0
抖音 用户id转uid
https://download.csdn.net/download/qq_38154948/87769887
拉灯的小手
2023/05/10
1.7K1
How to Build an Effective Initial Deployment Pipeline
前言 原文:How to Build an Effective Initial Deployment Pipeline 作者:Amin Shah Gilani, Pakistan  正文 I lov
WindCoder
2018/09/19
7570
How to Build an Effective Initial Deployment Pipeline
LeetCode8. 字符串转整数 (atoi)
 多考虑一些细节即可 class Solution { public int myAtoi(String str) { long ans = 0,MAX_INT = (long)Integer.MAX_VALUE + 1; boolean flag = false; int st = 0; while(st < str.length() && str.charAt(st) == ' ') { st++;
mathor
2018/07/24
6570
LeetCode8. 字符串转整数 (atoi)
[Leetcode][python]String to Integer (atoi)/字符串转整数 (atoi)
将情况都考虑进去 1. 空字符串:返回 2. 从前往后遍历,发现空格,i++ 3. 若有符号,存储sign(flag) 4. 字符串转整数,result = result * 10 + ord(str[i]) - ord('0'),如果溢出直接返回MAX或MIN
蛮三刀酱
2019/03/26
9720

相似问题

Heroku Postgres在Rails上的连接

10

无法恢复heroku上的postgres转储

32

如何在heroku上使用postgres和rails

30

在heroku postgres上运行rails规范测试

10

无法在Heroku中的Postgres上加载Rails架构

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档