nem regota foglalkozom mysql-lel, de gondolom ez nem feature hanem bug:
SELECT t.TABLE_NAME
FROM information_schema.TABLES t
WHERE t.TABLE_SCHEMA = 'sema' AND
t.TABLE_NAME = 'table'
a fenti select hoz 1 db rekordot a tabla nevevel, eddig minden ok.
SELECT *
FROM information_schema.TABLES t
WHERE t.TABLE_SCHEMA = 'sema' AND
t.TABLE_NAME = 'table'
ez igy nem hoz semmit.
Az egyeduli kulonbseg a ket query kozott a selectben levo oszlopok. Ha beteszem a ROW_FORMAT, TABLE_ROWS, stb oszlopokat, akkor nem hoz eredményt. Szerintetek ez mitol lehet?
- 5758 megtekintés
Hozzászólások
senki?:)
- A hozzászóláshoz be kell jelentkezni
Nekem működik [rootként], vagy valamit elnézek :-)
mysql> SELECT t.TABLE_NAME FROM information_schema.TABLES t WHERE t.TABLE_SCHEMA = 'aa' AND t.TABLE_NAME = 'album';
+------------+
| TABLE_NAME |
+------------+
| album |
+------------+
1 row in set (0.00 sec)
mysql> SELECT * FROM information_schema.TABLES t WHERE t.TABLE_SCHEMA = 'aa' AND t.TABLE_NAME = 'album';
+---------------+--------------+------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE | VERSION | ROW_FORMAT | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | MAX_DATA_LENGTH | INDEX_LENGTH | DATA_FREE | AUTO_INCREMENT | CREATE_TIME | UPDATE_TIME | CHECK_TIME | TABLE_COLLATION | CHECKSUM | CREATE_OPTIONS | TABLE_COMMENT |
+---------------+--------------+------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------------+
| def | aa | album | BASE TABLE | InnoDB | 10 | Compact | 5 | 3276 | 16384 | 0 | 0 | 9437184 | 6 | 2013-12-19 09:19:53 | NULL | NULL | latin1_swedish_ci | NULL | | |
+---------------+--------------+------------+------------+--------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------------+
1 row in set (0.00 sec)
mysql> SELECT t.TABLE_NAME,t.ROW_FORMAT,t.TABLE_ROWS FROM information_schema.TABLES t WHERE t.TABLE_SCHEMA = 'aa' AND t.TABLE_NAME = 'album';
+------------+------------+------------+
| TABLE_NAME | ROW_FORMAT | TABLE_ROWS |
+------------+------------+------------+
| album | Compact | 5 |
+------------+------------+------------+
1 row in set (0.00 sec)
Server version: 5.5.34-0ubuntu0.12.10.1 (Ubuntu)
- A hozzászóláshoz be kell jelentkezni
select t.*
..
így?
- A hozzászóláshoz be kell jelentkezni
Akkor lehet ilyen, hogyha nem ugyanazzal a userrel csinalod a 2 queryt, es a masodik esetben nincs joga a userednek azt a semat olvasni, amiben a tabla benne van.
- A hozzászóláshoz be kell jelentkezni
Ja igen, azt elfelejtettem mondani, hogy a legtobb esetben nalam is normalisan mukodik, csak nehany tabla van, aminel ezt produkalja.
Ugyanazzal a userrel csinalom, sot root-tal is ez tortenik...
select t.* is ugyanez.
egyebkent egy ilyen produkalja: 5.5.35-MariaDB MariaDB Server
- A hozzászóláshoz be kell jelentkezni
Tudsz egy show create table-t mutatni? Az alapjan elvileg ez reprodukalhato.
- A hozzászóláshoz be kell jelentkezni
Ja igen, kozben kiderult, hogy ezek a tablak nincsenek is meg. Tehat select, show create table mind azt mondja, hogy a tabla doesn't exist.
Sot, ha megprobalok ugyanilyen nevvel tablat letrehozni, arra is azt irja, hogy doesn't exist :O
- A hozzászóláshoz be kell jelentkezni
Ez valoszinu dictionary corruption, tipikusan akkor fordul elo, ha drop table kozben kap a server egy kill -9-et. A lenyeg, hogy az innodb data dictionaryjeben ott van a tabla, de a filesystemben mar nincs, es ezert dropolni sem tudod. Amikor megprobalod letrehozni, vagy hozzaferni kene irnia valamit az error logba, legalabb log_warnings=2 eseten.
- A hozzászóláshoz be kell jelentkezni
Ilyen baromságot csak innodb csinál ? Hogy én azt hogy utálom...
--
Fontos! Ha berágok, nem feltétlen személyed ellen szól...
openSUSE 13.1 x86_64
- A hozzászóláshoz be kell jelentkezni
na közben megnéztük, es filesystem szinten ott van.
lehet ezt valahogy javitani?:)
- A hozzászóláshoz be kell jelentkezni
nem tán InnoDB? :D
~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni