На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> Проблема при создании таблиц
    сейчас решил протестировать контроллер баз данных и переключиться на постгрес. Создал базу, но при создании таблиц из под стандартного функционала phpPgAdmin вылезает ошибка:

    Цитата
    ERROR: syntax error at or near "("
    LINE 1: ...TE TABLE "xgb_chidoridev"."cd_pages" ("id" integer(10), "nam...

    В операторе:
    ExpandedWrap disabled
      CREATE TABLE "xgb_chidoridev"."cd_pages" ("id" integer(10), "name" character varying(255), "title" character varying(255), "rights" integer(2), "priority" integer(1), "uopen" text, "uclose" text, "updatetime" integer(20), "createtime" integer(20), "theme" character varying(255), PRIMARY KEY ("id")) WITHOUT OIDS


    После прочтения мануала по постгрес, решил сделать так же как впримере - указывать таблицы и поля без кавычек. Но всё равно запрос не проходит. Подскажите, в чём может быть проблема?
      в типе integer убери "(...)" и вместо этого пользуйся другими типами, вроде smallint или serial...

      Добавлено
      и учти, если ты поле заключаешь в ковычки, то и потом в запросах не забывай их ставить ))
        Вот так сделал:
        ExpandedWrap disabled
          СREATE TABLE "xgb_chidoridev"."cd_pages" ("id" smallint, "name" character varying(255), "title" character varying(255), "rights" smallint, "priority" smallint, "uopen" text, "uclose" text, "updatetime" smallint, "createtime" smallint, "theme" character varying(255), PRIMARY KEY ("id")) WITHOUT OIDS


        Всё равно ошибка вылетает :(
          Цитата Serafim @
          Всё равно ошибка вылетает :(

          та же ошибка?

          Цитата Serafim @
          "xgb_chidoridev"

          тебе все в кавычки принципиально нужно? )))
            Цитата Silver Soft @
            та же ошибка?

            ERROR: syntax error at or near "СREATE"
            LINE 1: СREATE TABLE "xgb_chidoridev"."cd_pages" ("id" smallint, "na...

            Цитата Silver Soft @
            тебе все в кавычки принципиально нужно? )))

            Ну это phpPgAdmin по умолчанию ставит :) Просто пока не особо знаком с синтаксисом Postgres, поэтому и использую его интерфейс
              вот у меня код создания таблицы:

              ExpandedWrap disabled
                CREATE TABLE phone.stat_201108
                (
                  id integer,
                  authid bigint,
                  dialpeerid bigint,
                  "SRCnum" character varying(50),
                  "DSTnum" character varying(50),
                  "ElapsedTime" bigint,
                  "TimeBegin" timestamp(6) without time zone,
                  "TimeConnect" timestamp(0) without time zone,
                  "TimeDisconnect" timestamp(0) without time zone,
                  "DisconnectCode" character varying(100),
                  "DisconnectInitiator" character varying(20),
                  "QoS" double precision,
                  "SRCproto" character varying(100),
                  "DSTProto" character varying(100),
                  "SRCIP" inet,
                  "DSTIP" inet,
                  "SRCBytesIn" bigint,
                  "DSTBytesIn" bigint,
                  "CallId" integer,
                  "SRCTarifId" integer,
                  "SRCDuration" integer,
                  "SRCCost" double precision,
                  "SRCClientId" integer,
                  "DSTTarifId" integer,
                  "DSTDuration" integer,
                  "DSTCost" double precision,
                  "DSTClientId" integer,
                  "DSTPrefixId" integer,
                  "RootGroup" integer,
                  "DateAdd" timestamp without time zone
                )
                WITH (
                  OIDS=FALSE
                );
                ALTER TABLE phone.stat_201108_old OWNER TO postgres;
                Цитата Silver Soft @
                тебе все в кавычки принципиально нужно? )))

                ExpandedWrap disabled
                  СREATE TABLE cd_pages (id smallint, name character varying(255), title character varying(255), rights smallint, priority smallint, uopen text, uclose text, updatetime smallint, createtime smallint, theme character varying(255), PRIMARY KEY (id)) WITHOUT OIDS


                Один хрен - эррор:
                Цитата
                ERROR: syntax error at or near "СREATE"
                LINE 1: СREATE TABLE cd_pages (id smallint, name character varying(2...
                  "xgb_chidoridev" убери тут хотя бы ))

                  и лучше пользуйся pgAdmin'ом )) им удобней ))

                  Добавлено
                  http://www.pgadmin.org/download/
                    Цитата Silver Soft @
                    вот у меня код создания таблицы:

                    ExpandedWrap disabled
                      СREATE TABLE cd_pages (
                          id smallint,
                          "name" character varying(255),
                          "title" character varying(255),
                          rights smallint,
                          priority smallint,
                          uopen text,
                          uclose text,
                          updatetime smallint,
                          createtime smallint,
                          "theme" character varying(255),
                          PRIMARY KEY (id)
                      ) WITHOUT OIDS


                    Всё равно не работает :(

                    Добавлено
                    И вот так тоже:

                    Цитата
                    Ошибка SQL:

                    ERROR: syntax error at or near "СREATE"
                    LINE 1: СREATE TABLE cd_pages (
                    ^
                    В операторе:
                    ExpandedWrap disabled
                      СREATE TABLE cd_pages (
                          id smallint,
                          "name" character varying(255),
                          "title" character varying(255),
                          rights smallint,
                          priority smallint,
                          uopen text,
                          uclose text,
                          updatetime smallint,
                          createtime smallint,
                          "theme" character varying(255),
                          PRIMARY KEY (id)
                      )
                      WITH (
                        OIDS=FALSE
                      )
                    Сообщение отредактировано: Serafim -
                      чего-то мне кажется, что phpPgAdmin ерундовничает... я ошибки не вижу ) вроде все написано верно.. во только ощущение, что CREATE (С русская стоит) )))
                        пс. а почему id smallint. может нужен тип serial?
                          Цитата Silver Soft @
                          во только ощущение, что CREATE (С русская стоит) )))

                          красавец! :dance: Просто когда в 10ый раз правил запрос - первая буква потерялась, перепечатал похоже на русском :rolleyes:

                          Добавлено
                          Цитата ViktorXP @
                          пс. а почему id smallint. может нужен тип serial?

                          ну дык яж майсикьюэльщик :) Вы мне тыкните что лучше и где, я запомню и подправлю
                            для id лучше конечно serial, но я иногда и просто integer использую))
                              serial это типа bigint auto increment
                                Цитата Silver Soft @
                                Просто когда в 10ый раз правил запрос - первая буква потерялась, перепечатал похоже на русском

                                бывает)) со всеми бывает )) а если еще не спать сутками, то это уже самая частая ошибка )))
                                  Цитата ViktorXP @
                                  serial это типа bigint auto increment

                                  Ясно :) Хотя я явно указал "уникальный ключ" в админке :unsure:
                                    ну serial не дает уникальность. это просто последовательность.
                                    а уникальность не делает колонку автоинкрементирующей (тебе придется самому тыкать туда значения)
                                    в отличии от мускуля тут можно создать несколько колонок serial и не обязательно что бы хоть одна из из была prymary key
                                      Что бы не плодить тем. Всё сделал, всё заработало, контроллер встал, но теперь вылезает такая ошибка:
                                      ExpandedWrap disabled
                                        Warning: pg_query(): Query failed: ERROR:  column "1312351929" does not exist
                                        LINE 1: UPDATE cd_users SET last_visit="1312351929" WHERE id=1
                                      :blink:

                                      Добавлено
                                      Это внутренние функции движка - обновляют дату последнего посещения
                                        имя колонки обрамляется двойной кавычкой, а значение одиночной.
                                          Цитата ViktorXP @
                                          имя колонки обрамляется двойной кавычкой, а значение одиночной.

                                          ясно :)
                                            Цитата Serafim @
                                            Это внутренние функции движка - обновляют дату последнего посещения

                                            Так тут есть тип date/time которые нормально воспринимаю дату (типа 01.01.2001. формат при этом настривается)
                                              Цитата ViktorXP @
                                              Так тут есть тип date/time которые нормально воспринимаю дату (типа 01.01.2001. формат при этом настривается)

                                              нужен юниксовский таймстамп, ибо он и используется в моське :) Яж не буду переписывать весь движок под постгрес - это всего лишь в виде совместимости
                                              Сообщение отредактировано: Serafim -
                                                timestamp

                                                как пользоваться: http://postgresql.ru.net/manual/functions-datetime.html
                                                  В пыхе timestamp - это просто циферки. Секунды с начала эпохи юникса и для этого идеально подходит integer
                                                    Цитата Serafim @
                                                    нужен юниксовский таймстамп, ибо он и используется в моське
                                                    В мускуле не юниксовый таймштамп - там свой. Как и в Postres

                                                    offtop
                                                    Цитата Serafim @
                                                    Секунды с начала эпохи юникса и для этого идеально подходит integer
                                                    не идеально, ибо int на разных машинах разной длинны и диапазон допустимых значений, соответственно, тоже разный :)


                                                    ps:
                                                    ExpandedWrap disabled
                                                      postgres=# select date_part('epoch','Mon, 12 Sep 2011 15:19:11 +0400'::timestamptz);
                                                       date_part  
                                                      ------------
                                                       1315826351
                                                      (1 row)
                                                      postgres=# select '1970-01-01'::timestamptz + (interval '1315826351 second');
                                                              ?column?        
                                                      ------------------------
                                                       2011-09-12 12:19:11+04
                                                      (1 row)
                                                    правда, из пыха подобными хаками заниматься проще...

                                                    Добавлено
                                                    ой, пардон, на дату не посмотрел :blush:
                                                    Сообщение отредактировано: negram -
                                                      Серафим, превед! Как там в мейд ру жисть?
                                                        Цитата Хайзенберг @
                                                        Серафим, превед! Как там в мейд ру жисть?

                                                        Охрененно, руби изучаю :D
                                                        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                                        0 пользователей:


                                                        Рейтинг@Mail.ru
                                                        [ Script execution time: 0,0693 ]   [ 14 queries used ]   [ Generated: 21.06.25, 07:23 GMT ]