Re: PGAdmin for PostgreSQL 9.3 creates tables with double quotes embedded in the name
От | Darren Duncan |
---|---|
Тема | Re: PGAdmin for PostgreSQL 9.3 creates tables with double quotes embedded in the name |
Дата | |
Msg-id | 538CBF4C.1070704@darrenduncan.net обсуждение исходный текст |
Ответ на | Re: PGAdmin for PostgreSQL 9.3 creates tables with double quotes embedded in the name (Rob Richardson <RDRichardson@rad-con.com>) |
Список | pgadmin-support |
Rob, I was listening to you just fine; you weren't listening to me. Your problem was due to you using uppercase letters in your names when you created them. I never at any time said you used a manually written SQL statement to create the table; my comment about writing SQL referred to later on, when you were *using* the table you had already created, per your examples. -- Darren Duncan On 2014-06-02, 5:43 AM, Rob Richardson wrote: > Darren, > > You are not listening to me. > > If I was using plain SQL, entered manually, I would use all lower-case characters. > > I am not using plain SQL entered manually. I am using PGAdmin's table creation > tool. That is why this thread was started in the PGAdminSupport group instead > of pg_general. My table creation process starts here: > > I then specify columns like this: > > I then specify a primary key like this: > > I then use PGAdmin’s SQL window to try to access the table: > > In this case, as I was afraid of, the query worked, telling me there was no data > in the table. That is not the result I was seeing last week. > > Please do not insult my intelligence by telling me that I created the table I > was asking about in some way other than the one shown above. The method shown > above is how I created the table. I repeat: I did not use a manually typed SQL > statement to create the table. > > When I first created the table, I named it “Log”. My first guess was that that > was a reserved word, and PostgreSQL automatically wrapped it in double quotes to > make sure that the word would be handled as a name rather than as a keyword. I > believe that that much is correct. But then I changed name to “AnotherLog”, and > I still had the same problem. Then I dropped the table and recreated it using a > name like “ThisIsALogTableButItsNameIsNotAKeyword”. I still had the same > problem! Finally, I had to drop the table created using PGAdmin and use the SQL > query window to manually enter a CREATE TABLE query. > > I am relieved to see that I could not recreate the problem now, since that means > that my company will not have to change its normal practices when creating > databases, but I would still like to understand exactly what happened so that I > can avoid it in the future. And if this is a bug in PGAdmin, perhaps it can be > fixed. > > Rob Richardson > > Rad-Con, Incorproated > > -----Original Message----- > From: Darren Duncan [mailto:darren@darrenduncan.net] > Sent: Friday, May 30, 2014 5:23 PM > To: Rob Richardson; pgadmin-support@postgresql.org > Subject: Re: [pgadmin-support] PGAdmin for PostgreSQL 9.3 creates tables with > double quotes embedded in the name > > Rob, this is what you do. > > Either: > > 1. Use plain lowercase for all of your tablevar and other entity names, meaning > it will work both quoted and unquoted in all contexts. > > 2. If you use any uppercase, then if writing SQL you use double-quotes around > said entity nmes everywhere they appear. > > See, SQL entities are case-sensitive in the general case of being quoted, but in > the special case of not quoting the names in SQL, they are folded to lowercase > before being matched. > > If this is all complicated to you, then just use straight lowercase everywhere > and it will just work. > > -- Darren Duncan > > On 2014-05-30, 1:56 PM, Rob Richardson wrote: > > > Thank you for your reply. You said, in part: > > > > > > What's happening in your case is that the table must have been > created like this: > > > > > > create table "Log" [.....] > > > > > > But the whole point of my message is that that is not how this table was > created. I did not open an SQL window and type in the CREATE TABLE command > manually. I selected the database in PGAdmin, went down to the Tables list > (which said I had 0 table), right clicked on the word "Tables", and selected > "New table". In the new table dialog I entered the table name as Log (no > quotes), I defined its columns and its primary key, and I clicked OK. After I > did all that, I then found that "select * from Log" (no quotes around Log) > failed, claiming there was no relation named "Log". I then found that "select * > from "Log" " (quotes around Log) worked. I then concluded that the table was > being created with the double quotes included in the table name. > > > > > > I did find one place where I actually saw the name referred to as '"Log"'. > That's the word Log, surrounded by double quotes, and then surrounded again by > single quotes. Unfortunately, I do not now remember where that was. > > > > > > RobR >
В списке pgadmin-support по дате отправления:
Предыдущее
От: "J.F. Oster"Дата:
Сообщение: Re: PGAdmin for PostgreSQL 9.3 creates tables with double quotes embedded in the name
Следующее
От: David G JohnstonДата:
Сообщение: Re: PGAdmin for PostgreSQL 9.3 creates tables with double quotes embedded in the name