迁移postgres时序列错误脚本修复

迁移postgres数据库的时候,有时候会出现序列与数据库值不匹配的现象.参考了https://stackoverflow.com/questions/244243/how-to-reset-postgres-primary-key-sequence-when-it-falls-out-of-sync之后,

改写了一下脚本,执行后可正常使用了.

 1 do --check seq not in sync
 2 $$
 3 declare
 4  _r record;
 5  _i bigint;
 6  _m bigint;
 7 begin
 8   for _r in (
 9     Select
10       DISTINCT(constraint_column_usage.table_name) as tablename,
11       constraint_column_usage.column_name as idname,
12       replace(replace(columns.column_default,‘‘‘::regclass)‘,‘‘),‘nextval(‘‘‘,‘‘) as seqname,
13             columns.table_schema as schamename
14       from information_schema.constraint_column_usage, information_schema.columns
15       where constraint_column_usage.table_schema =‘public‘ AND
16       columns.table_schema = ‘public‘ AND columns.table_name=constraint_column_usage.table_name
17       AND constraint_column_usage.column_name = columns.column_name
18       AND columns.column_default is not null
19    ) loop
20     execute format(‘select last_value from %I.%s‘,_r.schamename,_r.seqname) into _i;
21     execute format(‘select max(%I) from %I.%I‘,_r.idname,_r.schamename,_r.tablename) into _m;
22     if coalesce(_m,0) > _i then
23       raise info ‘%‘,concat(‘changed: ‘,_r.tablename||‘_Id_seq‘,‘ from:‘,_i,‘ to:‘,_m);
24       execute format(‘alter sequence %I.%I restart with %s‘,_r.schamename,_r.seqname,_m);
25     end if;
26   end loop;
27
28 end;
29 $$
30 ;

使用的时候根据实际情况修改一下 schema的值就好

原文地址:https://www.cnblogs.com/Raspberry-zx/p/12702310.html

时间: 2024-10-28 19:54:57

迁移postgres时序列错误脚本修复的相关文章

hishop网站迁移后出现DataProtectionConfigurationProvider错误(转)

配置错误说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件.分析器错误信息: 未能使用提供程序"DataProtectionConfigurationProvider"进行解密.提供程序返回错误信息为: 该项不适于在指定状态下使用. (异常来自 HRESULT:0×8009000B)源错误:行 10:行 11:   <connectionStrings configProtectionProvider="DataProt

IIS部署MVC应用程序时遇到错误403.14

用IIS部署MVC应用程序时遇到错误403.14,并且同学说试遍了网上的所有方法都没用 然后我下午还很执著地试了网上很多种方法都失败了. 然后查看了基本设置 就一直以为是授权问题,继续在网上找方法,说要登录 然后就一直提示密码错误,但是明明密码是对的.继续找答案. 修改了web.xml 但是并没有什么用,查了很多资料,偶然间翻到一个教程说要添加映射步骤如下 功能视图-->IIS-->处理程序映射 添加脚本映射 但是报错 解决这个错误的方法是启用windows功能,Internet Inform

SQL中迁移sql用户及密码脚本

SQL中迁移sql用户及密码脚本   编写人:CC阿爸 2014-6-20 在日常SQL数据库的操作中,常常需要迁移数据库或重装服务器,这时候,一些之前建立的login账户,必须重新建立,以下可以通过脚本,将其导出,在重装或移植时,可方便能过执行脚本来生成,不用再手动一个个建立.大大提高操作效率. select 'create login [' + p.name + '] ' + case when p.type in('U','G') then 'from windows ' else ''

打开Excel2010时提示错误:向程序发送命令时出现问题!

使用的是正版的Windows7(64位)专业版系统以及正版的Office2010专业版(32位),从去年3月份发现:打开Excel2010时弹出'程序发送命令时出现问题'的对话框,随后无法打开Excel文件的问题,但是 Word 和PowerPoint并没有出现类似问题. 尝试了下面的四种方法都没能得到解决: 1.采用Excel菜单'常规'选项下取消勾选"忽略使用动态数据交换(DDE)的其他应用程序"的方法( article-1296-1.html). 2.取消excel中的加载项的方

rpm打包时包含python脚本,需要忽略掉pyc, pyo字节码文件

制作rpm包时,有时包含python程序,一般默认的行为:打包时对python脚本会编译成pyc,pyo字节码文件并一起放在rpm包中,这可能导致打包时引用文件缺失的错误. 如果不需要这些字节码文件,可以修改 /usr/lib/rpm/brp-python-bytecompile 找到编译pyc,pyo的两条命令,并将其注释,或者直接在脚本开头就用exit 0 退出. 但是要注意,如果已经打了一次包并在pyc,pyo文件缺失的步骤上失败,则打包的临时目录中可能残留了文件,需要把临时目录(通常在/

sql server在执行批处理时出现错误。错误消息为: 目录名无效

今天在客户服务器上的sql server上执行脚本,报错提示“在执行批处理时出现错误.错误消息为:目录名无效”,第一反应就是客户是不是在服务器装了360,因为之前有类似问题,360把数据库的文件给隔离了导致出错.的确,客户装了360.然后找了下解决方案,找到了解决方案,特别记录下来. C:\Users\Administrator\AppData\Local\Temp\  下新建 文件夹 命名为2 即可..

Error:cannot import name&#39;is_list_like&#39; --python使用pandas_datareader时出现错误,解决方案

1 import pandas as pd 2 pd.core.common.is_list_like = pd.api.types.is_list_like 在下行代码之前插入 from pandas_datareader import data 这个方法不必修改本地文件,在pandas_datareader 0.7.0版本会修复这个问题. Error:cannot import name'is_list_like' --python使用pandas_datareader时出现错误,解决方案

Win7 自带FTP将文件复制到FTP服务器时发生错误。

错误截图: 错误信息: 将文件复制到FTP服务器时发生错误.请检查是否有权限将文件放到该服务器上. 详细信息: 200 Type set to I. 200 PORT commad successful. 451 No mapping for the Unicode character exits in target multi-bye code page. 解决方案: 控制面板-->管理工具-->打开Internet信息服务(IIS)管理器.右键选中自己建立好的FTP站点,选择"管

Win10远程桌面连接树莓派3时出现错误:由于安全设置

http://blog.csdn.net/qq_33259138/article/details/52143407 在远程其树莓派时的电脑时提示错误“客户端无法建立与远程计算机的连接,远程计算机可能不支持所需的FIPS安全级别”或者“由于安全设置错误,客户端无法连接到远程计算机.确定你已登录到网络后.. 1.打开win10下的控制面板: 2.选择“管理工具”: 3.打开管理工具的“本地安全策略”: 4.在本地安全策略中,打开“本地策略”下的“安全选项”: 5.在右边的策略中,找到“系统加密:将F