Mar. 30th, 2017

pvaneynd: (Default)
As some of you know I'm back to coding. This morning I was trying to create a SQL table which failed with mysterious errors, like:

DB=> CREATE TABLE sequence (
 sequence_id INTEGER NOT NULL,
 guid_id INTEGER REFERENCES public.guid(id),
 sequence_number INTEGER NOT NULL);
ERROR:  relation "public.guid" does not exist
Time: 3.007 ms
DB=> \dt guid
        List of relations
 Schema | Name | Type  |  Owner
--------+------+-------+----------
 public | guid | table | pevaneyn
(1 row)


I was suspecting a hidden character, so od to the rescue:

$ od -c failing-command
...
0000140   i   d       I   N   T   E   G   E   R       R   E   F   E   R
0000160   E   N   C   E   S     357 273 277   g   u   i   d   (   i   d
...


Octal 357 273 277? Clearly this is UTF-8 encoding of something invisible. Let's use clisp:

[1]> CUSTOM:*TERMINAL-ENCODING*
#<ENCODING CHARSET:UTF-8 :UNIX>
[2]> (EXT:CONVERT-STRING-FROM-BYTES (vector #o357 #o273 #o277) CUSTOM:*TERMINAL-ENCODING*)
""
[3]> (aref (EXT:CONVERT-STRING-FROM-BYTES (vector #o357 #o273 #o277) CUSTOM:*TERMINAL-ENCODING*) 0)
#\ZERO_WIDTH_NO-BREAK_SPACE

Ok an invisible space got inserted somewhere along the line... At least I'm not getting mad and forgetting basic SQL :)

Profile

pvaneynd: (Default)
pvaneynd

September 2023

S M T W T F S
     12
3456789
10111213141516
171819 20212223
24252627282930

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 6th, 2025 08:32 am
Powered by Dreamwidth Studios