Как стать автором
Обновить

Комментарии 88

НЛО прилетело и опубликовало эту надпись здесь
так на звонки не отвечает же, при чем тут покупка ноутбука :)
Простите, но если Вы, зная о том, что в его отсутствие Вам, возможно, понадобится его помощь, спросили его: «если что, я тебе отзвоню, ok?», и он на это ответил «да», то это ничего не значит. Обычная условность. Не мог же он ответить «нет, не звони мне».
Это вроде того, что на вопрос «как дела», люди в 99% случаев отвечают «отлично».
Ниже откомментировали, что «программистов нельзя трогать в отпуске». Скажу больше. В отпуске вообще никого беспокоить нельзя.
Незаменимых людей нет. Если возникли такие проблемы, значит это вопрос плохой организации.
> Не мог же он ответить «нет, не звони мне»

Он мог честно сказать, что будет недоступен, но не безответственно обещать, отмораживаться, а затем списывать все на условность.
Телепаты хабра, отзовитесь :)

Ошибку-то привели бы целиком, там и стало бы все ясно.
DELETE FROM `object_` WHERE `id` = 225671 LIMIT 1

Ответ MySQL: Документация
#1054 — Unknown column 'id' in 'where clause'

— — — — Только запрос верный.
И колонка есть и все.

Удаление не работает ни SQL запросом, ни нажатием кнопки «Удалить» в PhpMyadmin'е, ни из шелла, ни из админки сайта.

Регистр букв порой бывает важен. `ID` не всегда одно и то же, что и `id`.
ну как телепат с небольшим опытом, могу подсказать только

SET FOREIGN_KEY_CHECKS=0;
Выбрал таблицу, перешел на вкладку SQL запрос,
выполняю:

SET FOREIGN_KEY_CHECKS=0;
DELETE FROM `object_` WHERE `id` = 225671 LIMIT 1

не работает :(
В консоли MySQL попробуйте.
перезапустите мускул. может таблицы покоцались.
Перезапуск не помог. Сейчас смотрят добрые люди
Спасибо!
>Вы не сталкивались с такой ситуацией?
>Куда копать?
косяк во внешних ключах
SET FOREIGN_KEY_CHECKS=0;
DELETE FROM `object_` WHERE `id` = 225671 LIMIT 1

не работает, или это не то?
тогда привилегии какие у пользователя? есть ли привилегия на удаление данных из таблицы? см таблицу mysql.user
Да уже и рутом все делаем, нет толку
Скрипты создания таблиц в студию. Хотя бы для object_
^_^
Ну я же не программист :)
Могу только структуру
дамп структуры сделайте в phpmyadmin.
таблица единственная или есть другие?
странно для этой таблицы когда она одна DELETE FROM `object_` WHERE `id` = 225671 LIMIT 1 проходит нормально попробуйте
SET FOREIGN_KEY_CHECKS=0;
DELETE FROM `object_` WHERE `object_`.`id` = 225671 LIMIT 1
Нет, не помогло
вы уверены что у вас только одна таблица? можете привести полный дамп структуру базы?
использовали phpmyadmin? или же из консоли?
Можно конечно дропнуть все ключи и потом создать их заново но не к чему хорошему это не приведет.
Посмотрите какая таблица ссылается на эту. Если не сложно то выложите дамп структуры всех таблиц, а не только order_
А не удаляется только эта запись? Попробуйте создать новую строку и удалить ее…
Вернётся из отпуска, скажите пусть напишет как он это сделал, я тоже так хочу уметь :)
Да уж! :)
Смотрите апдейт :)
отпишитесь потом если найдете проблему — интересно :) с виду все должно работать на ура
Смотрите апдейт :)
www.cottage.ru/temp/
закройте срочно директорию на листинг и дайте админу втык, таких вещей не должно быть в открытом доступе никогда.
у вас на сайте параметр в поиске price_do — не верно обрабатывается — если поставить в нем <800000 то на странице в форме поиска появится NaN. подозреваю что и sql injection можно попробовать сделать, но не хочется проверять весь сайт
В этой диретокрии лежит вся база сайта
Это не та база
Помойму не так уж важно какая это база, мне почему то кажется что это не 900 метров тестовых значений, а соответственно есть те кому это было бы интересно. Запретите листинг каталога.
Создайте .htaccess файл в этой папке и напишите в нем
Options -Indexes
я видел, мне лень качать 900 метров и человека жалко…
чую сейчас все, кому не лень, будут ее качать
уже нет, быстро отреагировали — закрыли доступ. имхо молодцы
неа, они только просмотр папки закрыли, если знать названия файлов можно скачать до сих пор, вот пример.
www.cottage.ru/temp/dump_object.txt
а может быть ситуация, что на таблице висят некоторые триггеры на удаление строк, само удаление заблочено и может выполняться сугубо через внутренние процедуры?
может быть все что угодно, без полного дампа базы сложно применять телепатию
можно с полным дампом, можно просто через шелл добраться до внутреннего хранилищя баз мускула, и там уже проверить какие триггеры/процедуры созданы. пусть проверят, может сами и обнаружат проблему
Все, решили, см. апдейт топика
Спасибо!
А я бы продлил кое-кому отпуск на неограниченный срок…
Ну да, пообещать быть на связи, и в критический момент сбивать звонки — это, наверное, похвально :)
НЛО прилетело и опубликовало эту надпись здесь
> программист уехал в отпуск

программиста в отпуске трогать нельзя
что выводит

<?php
echo ini_get('mbstring.func_overload');
?>
кстати а
SELECT * FROM `object_` WHERE `id` = '225671' LIMIT 1
как себя ведет?
Нормально ведет, выбирает запись
интересно!
можно краем глаза взглянуть на базу через phpmyadmin?

butuzov@made.com.ua
Выводит 0
Либо я что то пропустил либо хабр кто-то начал путать с фрилансом
на фрилансе еще неизвестно кому пароли давать, а тут адекватное собрание… чужие пароли-доступы никому не нужны вроде
угу, предлагаю выложить пароли от своего аккаунта и убедиться в своей неправоте :)
«Починили», с созданием временной таблицы рядом.

DELETE FROM `object_` WHERE `id` = 225671 LIMIT 1
#1054 — Unknown column 'id' in 'where clause
Имхо дело в том, что имя таблицы оканчивается на знак подчеркивания, mysql это как-то криво интерпритирует.
В синтетических условиях повторить не получилось, на более свежем mysql все работает.
Дело как оказывается не в том :(
desc `object_` или show create table `object_` если сделаете и вывод кинете сюда, то 99% что проблема сразу обнаружится и решится
mysql> describe object_;
+-------------------------+------------------+------+-----+---------+----------- -----+
| Field | Type | Null | Key | Default | Extra |
+-------------------------+------------------+------+-----+---------+----------- -----+
| id | int(11) | NO | PRI | NULL | auto_incre ment |
| object_status_id | int(2) unsigned | NO | MUL | 1 | |
| admin_comment | text | YES | | NULL | |
| create_date | datetime | YES | | NULL | |
| active_date_start | datetime | YES | | NULL | |
| active_date_end | datetime | YES | | NULL | |
| paid_position | int(2) | YES | | 100 | |
| sort_index | int(10) unsigned | YES | MUL | 0 | |
| category_id | int(11) | YES | MUL | 1 | |
| realty_type_id | int(11) | YES | MUL | 1 | |
| name | varchar(255) | YES | | NULL | |
| city_id | int(11) | YES | MUL | 1 | |
| direction_ids | varchar(30) | YES | | NULL | |
| distance | int(10) unsigned | YES | MUL | NULL | |
| price | int(11) unsigned | YES | MUL | 0 | |
| price_ot | int(11) unsigned | YES | | 0 | |
| price_do | int(11) unsigned | YES | | 0 | |
| currency_id | int(2) | YES | | 0 | |
| users_id | int(11) | YES | MUL | 0 | |
| comment_permition | int(1) unsigned | YES | | 1 | |
| description | text | YES | | NULL | |
| own_contacts_flag | int(1) | YES | | 0 | |
| own_name | varchar(255) | YES | | NULL | |
| own_last_name | varchar(255) | YES | | NULL | |
| own_company | varchar(255) | YES | | NULL | |
| own_company_description | text | YES | | NULL | |
| own_logo_img | varchar(255) | YES | | NULL | |
| own_tel | varchar(255) | YES | | NULL | |
| own_email | varchar(255) | YES | | NULL | |
| own_url | varchar(255) | YES | | NULL | |
| own_url_title | varchar(255) | YES | | NULL | |
+-------------------------+------------------+------+-----+---------+----------- -----+
31 rows in set (0.01 sec)
SELECT * FROM `object_` WHERE `id` = '225671' LIMIT 1 LOCK IN SHARE MODE;
DELETE * FROM `object_` WHERE `id` = '225671'
Oo
Нет, не помогло :(
Кстати, DELETE без * надо.
Да, прошу прощения, переписывал с SELECT…

Интересная задачка :)
BEGIN;
DELETE FROM `object_` WHERE `id` = '225671';
COMMIT;

больше идей пока нет :)
Неа :) Не сработало
mysql> BEGIN; DELETE FROM `object_` WHERE `id` = '225671'; COMMIT;
Query OK, 0 rows affected (0.00 sec)

ERROR 1054 (42S22): Unknown column 'id' in 'where clause'
Query OK, 0 rows affected (0.14 sec)
DELETE FROM `object_` as ttb WHERE ttb.`id` = '225671';
Пишет «неверный синтаксис»
А так?
DELETE FROM `object_` WHERE `object_`.`id` = '225671' LIMIT 1;
проапдейтить поле можете?
Как именно? Я не совсем в этом разбираюсь.
UPDATE `object_` SET `own_url`= 'tratata'  WHERE `id` = '225671' ;
DELETE FROM `object_` WHERE  `own_url`= 'tratata';


Нет, не могу:

UPDATE `object_` SET `own_url` = 'tratata' WHERE `id` = '225671';
#1054 — Unknown column 'id' in 'where clause'
Причем:

UPDATE `cottage`.`object_` SET `name` = 'Кунцево-2' WHERE `object_`.`id` =6371 LIMIT 1;

например, проходит
Даже не знаю что вам посоветовать. Похоже на лок строки, но при этом другое сообщение ошибки выдается. Поексперементируйте с апдейтом по другим колонкам которые поддаются быстрому опознаванию + ну и с делейтом по ним.

порсто вся описываемая сцена подпадает под понятие «так не бывает», ну или по крайней мере «так быть не должно». я обычно характеризирую это «что тут не так» либо делается либо не договаривается.

варианты с скидыванием лока, поплевательства на внешние ключи, прямого запроса не прошли, это… мистерия какаято =)

удачи вам.
Все, решили, см. апдейт топика
begin;
ALTER TABLE object_ CHANGE id object_id INTEGER;
commit;
delete from object_ where object_id = 22567
Нет, опять выдает #1054 — Unknown column 'id' in 'where clause'
У меня была похожая ситуация, помогла смена root пароля.
А для другой записи тоже не работает DELETE?
Похоже, что у пользователя MySQL есть права на SELECT по этому полю в таблице, но нет прав на DELETE.
Попробуйте удалить из под root пользователя.
попробуйте так:
DELETE FROM (`object_`) WHERE `id` = 22567;
нет, не помогло
Попробуй проверить и восстановить таблицы через команды:
CHECK TABLE `object_`;
REPAIR TABLE `object_`;
OPTIMIZE TABLE `object_`;

А потом выполнить все предложенные выше запросы.
Все, решили, см. апдейт топика
Предлагаю перенести в блог Базы Данных как задачу с подвохом
Кармы не хватает
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории