PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Nama tabel Postgresql dan unicode:Mengapa saya tidak dapat memilih nama tabel dari skema informasi ketika berisi karakter unicode?

Sepertinya bug, mungkin di regclass atau sesuatu yang berhubungan dengannya:

# create table pinkƒpink1 (id serial);
NOTICE:  CREATE TABLE will create implicit sequence "pink?pink1_id_seq" for serial column "pink?pink1.id"
CREATE TABLE
# select 'pinkƒpink1'::name;
    name    
------------
 pinkƒpink1
(1 row)

# select 'pinkƒpink1'::regclass;
  regclass   
-------------
 "pinkpink1"
(1 row)

# select relname from pg_class where oid = 'pinkƒpink1'::regclass;
  relname  
-----------
 pinkpink1

# select relname from pg_class where relname = 'pinkƒpink1'::name;
 relname 
---------
(0 rows)

# select relname from pg_class where relname = 'pinkpink1';
 relname 
---------
(0 rows)

(Sistem saya adalah OSX Lion dengan semua utf8, jika itu penting.)

Untuk solusinya, Anda dapat mentransmisikannya ke ::regclass seperti yang dilakukan di atas (yang menemukan tabel). Perhatikan bahwa casting ke ::regclass akan menghasilkan kesalahan jika tabel tidak ada, jadi beri kode yang sesuai.

Sesuai permintaan Craig:

# SELECT current_setting('server_encoding') AS server_encoding, current_setting('client_encoding') AS client_encoding, version();
 server_encoding | client_encoding |                                                              version                                                              
-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------
 UTF8            | UTF8            | PostgreSQL 9.2.4 on x86_64-apple-darwin11.4.2, compiled by Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn), 64-bit
(1 row)

Dan menurut Erwin:

# SELECT name, setting FROM pg_settings WHERE  name IN ('lc_collate','lc_ctype','client_encoding','server_encoding');
      name       |   setting   
-----------------+-------------
 client_encoding | UTF8
 lc_collate      | en_US.UTF-8
 lc_ctype        | en_US.UTF-8
 server_encoding | UTF8
(4 rows)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan rekaman terbaru yang efisien dengan Postgresql

  2. Apakah lebih baik menggunakan beberapa database dengan satu skema masing-masing, atau satu database dengan beberapa skema?

  3. Bagaimana cara mengakses postgresql di mesin virtual gelandangan?

  4. Apakah pesanan dalam subquery dijamin untuk dipertahankan?

  5. Tidak dapat membuka koneksi yang disebabkan oleh Set Hasil ini ditutup