Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL查询失败_Sql_Postgresql_Postgresql 9.2_Postgresql 9.3 - Fatal编程技术网

PostgreSQL查询失败

PostgreSQL查询失败,sql,postgresql,postgresql-9.2,postgresql-9.3,Sql,Postgresql,Postgresql 9.2,Postgresql 9.3,我对PostgreSQL有一个独特的问题。在将数据插入数据库后,我尝试检索大于特定字符串的所有内容。但是,它不会返回任何数据。所以,我在另一台机器上试了一下,它成功了。所以我的问题是,我的数据在一台机器上返回,而不是在另一台机器上返回。我测试: 运行PostgreSQL 9.2的Windows 7 pro桌面(已运行) 运行PostgreSQL 9.3的Windows 8.1 pro笔记本电脑(已运行) Fedora 20运行笔记本电脑PostgreSQL 9.3(已运行) 运行桌面Postgr

我对PostgreSQL有一个独特的问题。在将数据插入数据库后,我尝试检索大于特定字符串的所有内容。但是,它不会返回任何数据。所以,我在另一台机器上试了一下,它成功了。所以我的问题是,我的数据在一台机器上返回,而不是在另一台机器上返回。我测试:

运行PostgreSQL 9.2的Windows 7 pro桌面(已运行)
运行PostgreSQL 9.3的Windows 8.1 pro笔记本电脑(已运行)
Fedora 20运行笔记本电脑PostgreSQL 9.3(已运行)
运行桌面PostgreSQL 9.3的Fedora 20(失败)

下面是我的测试用例,它分布在所有系统中:

create table test(key0 character(38) not null, constraint pkey primary key (key0)) with (oids=false);
insert into test (key0) values ('00 00        00        00 0000');
以下查询将在计算机上返回不同的结果:

select * from test where key0 >= '00 00        00        00 00        00' order by key0;
我完全不知道为什么这个查询不能在一台机器上运行


任何帮助都将不胜感激。

这很可能与排序有关。见此:

select * from test where key0 >= '00 00        00        00 00        00' order by key0;
 key0 
------
(0 rows)

select * from test where key0 >= '00 00        00        00 00        00' COLLATE "C" order by key0;
                  key0                  
----------------------------------------
 00 00        00        00 0000        
(1 row)

我猜您没有为CREATE DATABASE语句提供LC_COLLATE参数,它复制了系统默认值,这在您的系统中是不一样的。

为了确保这一点,您可以尝试使用EXPLAIN来显示执行计划。EXPLAIN返回的结果是:查询计划排序(cost=20.49..20.85行=143宽度=156)(实际时间=0.064..0.064行=0循环=1)排序键:key0排序方法:快速排序内存:25kB->测试时顺序扫描(成本=0.00..15.38行=143宽度=156)(实际时间=0.035..0.035行=0循环=1)筛选器:(key0>='00'::bpchar)筛选器删除的行:1总运行时间:0.094毫秒(7行)如何修复我的表,使我不需要对语句进行排序?您必须使用pg_dump、DROP DATABASE和CREATE DATABASE来转储数据,并显式地提供所需的排序规则。Edit:嗯,您可以使用所需的排序规则重新创建列,但这似乎不太适合未来。