Autor Zpráva
ferda999
Profil
Zdravím, asi trochu divný dotaz, nevím proč, dříve mě normálně procházel např. příkaz
INSERT INTO tabulka (col1,col2,col3,col4) VALUE ('val1','val2','val3','val4')
najednou mě to začalo vracet SQLSTATE[42S22] Column not found: Unknown column 'col3' in field list
když upravím ('col1','col2','col3','col4') tak ok

v phpAdminu to chodí i bez uvozovek

Co se změnilo, nebo v čem nastal problém? Seknul jsem se na tom půl dne, dříve u sql bylo vše ok, teď to u některých sloupců hlasí že neexistují. Přičemž na sqlkách jsem nic neměnil.

Děkuji za vysvětlení možné příčiny.
anonym_
Profil *
ferda999:
Uvozovky určitě ne, zpětné apostrofy. Jaký je reálný název toho sloupce, který vrací chybu?
ferda999
Profil
anonym:
mám sloupce id,name,uid,device .. a proč to zrovna hlásí u device? Proč dříve to šlo bez apostrofů (na scriptu jsem nic neměnil, tedy jestli nedělám někde botu)?
Kajman
Profil
Ukažte všechny sloupce, nejlépe výsledek
show create table tabulka

A co vrátí dotaz?
show variables where variable_name like 'lower_case_table_names'

Edit: plus výsledek
select version()
ferda999
Profil
Kajman:
lower_case_table_names 0

CREATE TABLE `tabulka` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`jmeno` char(30) COLLATE utf8_czech_ci NOT NULL,
`device` char(50) COLLATE utf8_czech_ci DEFAULT NULL,
PRIMARY KEY (`uid`),
KEY `uid` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=40742 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci

nevím, proč hlásí neexistující sloupec když v tabulce je... v kodu jsem nic nemenil, jen jsem tabulku importoval pomoci phpMyAdmina z produkční db do testovací db. Před importem to fungovalo. Není v tom nějaký sváb?


Záhada, když příkaz provedu v phpMyAdmin, normálně se provede... přes volání v php hlásí neexistující sloupec. Tak nevím...
Kajman
Profil
PMA tuším dělávalo vlastní parsování dotazů a ve skutečnosti mohlo na server poslat jiný dotaz. I z toho důvodu jsem raději používal Adminer.

V php používáte nějakou databázovou knihovnu?

Jakou verzi vypíše ten doplnění dotaz select version()?
ferda999
Profil
10.1.19-MariaDB

klasika www.php.net/manual/en/pdo.exec.php

ještě zkusím sqlko přímo zadat do příkazu (jinak ho jako proměnnou sestavuji z parametrů), ....


Opravdu nechápu ... sloupeček device jsem z insertu vyhodil a řádek se vložil ... ale proč se sloupečkem device to nejde? V tabulce ten sloupek je i hodnotu zadávám správnou? V phpMyAdmin to jde i s device. Jméno sloupce jsem zkusil s apostrofy i bez.
ferda999
Profil
absudrní stav, dva inserty do stejné tabulky se stejným parametrem sloupců `device` char(50) COLLATE utf8_czech_ci DEFAULT NULL, `mobil` char(50) COLLATE utf8_czech_ci DEFAULT NULL,
INSERT INTO tabulka (device) VALUES ('aaaaaaaaaaaaaaa'); = sloupec device nenalezen
INSERT INTO tabulka (mobil) VALUES ('aaaaaaaaaaaaaaa'); = ok, vlozeno

dá se toto nějak vysvětlit?
ferda999
Profil
Omlouvám se a beru vše zpět, chyba asi nalezena, samozřejmě u mne ... a den hledání....

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0