Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot delete row from MySQL

I've got a table, which won't delete a row. Specifically, when I try to delete any row with a GEO_SHAPE_ID over 150000000 it simply does not disappear from the DB.

I have tried:

  1. SQLyog to erase it.
  2. DELETE FROM TABLE WHERE GEO_SHAPE_ID = 150000042 (0 rows affected).
  3. UNLOCK TABLES then 2.

As far as I am aware, bigint is a valid candidate for auto_increment. Anyone know what could be up? Whenever I perform any of the above operations and refresh the table listing, the row re-appears. You gotta help us, Doc. We’ve tried nothin’ and we’re all out of ideas!

DJS.

EDIT: as per Daniel Vassallo's suggestion:

mysql> SELECT * FROM `GEO_SHAPE` WHERE GEO_SHAPE_ID = 150000042;
Empty set (0.01 sec)

ANSWER: After discovering the 'check' and 'repair' commands in MySQL, I found corrupt keys, so fixed those and it worked.

PS. Here is the table construct and some sample data just for giggles.

CREATE TABLE `GEO_SHAPE` (
  `GEO_SHAPE_ID` bigint(11) NOT NULL auto_increment,
  `RADIUS` float default '0',
  `LATITUDE` float default '0',
  `LONGITUDE` float default '0',
  `SHAPE_TYPE` enum('Custom','Region') default NULL,
  `PARENT_ID` int(11) default NULL,
  `SHAPE_POLYGON` polygon default NULL,
  `SHAPE_TITLE` varchar(45) default NULL,
  `SHAPE_ABBREVIATION` varchar(45) default NULL,
  PRIMARY KEY  (`GEO_SHAPE_ID`)
) ENGINE=MyISAM AUTO_INCREMENT=150000056 DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

SET FOREIGN_KEY_CHECKS = 0;

LOCK TABLES `GEO_SHAPE` WRITE;
INSERT INTO `GEO_SHAPE` (`GEO_SHAPE_ID`, `RADIUS`, `LATITUDE`, `LONGITUDE`, `SHAPE_TYPE`, `PARENT_ID`, `SHAPE_POLYGON`, `SHAPE_TITLE`, `SHAPE_ABBREVIATION`) VALUES (57, NULL, NULL, NULL, 'Region', 10, NULL, 'Washington', 'WA');
INSERT INTO `GEO_SHAPE` (`GEO_SHAPE_ID`, `RADIUS`, `LATITUDE`, `LONGITUDE`, `SHAPE_TYPE`, `PARENT_ID`, `SHAPE_POLYGON`, `SHAPE_TITLE`, `SHAPE_ABBREVIATION`) VALUES (58, NULL, NULL, NULL, 'Region', 10, NULL, 'West Virginia', 'WV');
INSERT INTO `GEO_SHAPE` (`GEO_SHAPE_ID`, `RADIUS`, `LATITUDE`, `LONGITUDE`, `SHAPE_TYPE`, `PARENT_ID`, `SHAPE_POLYGON`, `SHAPE_TITLE`, `SHAPE_ABBREVIATION`) VALUES (59, NULL, NULL, NULL, 'Region', 10, NULL, 'Wisconsin', 'WI');
INSERT INTO `GEO_SHAPE` (`GEO_SHAPE_ID`, `RADIUS`, `LATITUDE`, `LONGITUDE`, `SHAPE_TYPE`, `PARENT_ID`, `SHAPE_POLYGON`, `SHAPE_TITLE`, `SHAPE_ABBREVIATION`) VALUES (150000042, 10, -33.8833, 151.217, 'Custom', NULL, NULL, 'Sydney%2C%20New%20South%20Wales%20%2810km%20r', NULL);
INSERT INTO `GEO_SHAPE` (`GEO_SHAPE_ID`, `RADIUS`, `LATITUDE`, `LONGITUDE`, `SHAPE_TYPE`, `PARENT_ID`, `SHAPE_POLYGON`, `SHAPE_TITLE`, `SHAPE_ABBREVIATION`) VALUES (150000043, 10, -33.8833, 151.167, 'Custom', NULL, NULL, 'Annandale%2C%20New%20South%20Wales%20%2810km%', NULL);
INSERT INTO `GEO_SHAPE` (`GEO_SHAPE_ID`, `RADIUS`, `LATITUDE`, `LONGITUDE`, `SHAPE_TYPE`, `PARENT_ID`, `SHAPE_POLYGON`, `SHAPE_TITLE`, `SHAPE_ABBREVIATION`) VALUES (150000048, 10, -27.5, 153.017, 'Custom', NULL, NULL, 'Brisbane%2C%20Queensland%20%2810km%20radius%2', NULL);
INSERT INTO `GEO_SHAPE` (`GEO_SHAPE_ID`, `RADIUS`, `LATITUDE`, `LONGITUDE`, `SHAPE_TYPE`, `PARENT_ID`, `SHAPE_POLYGON`, `SHAPE_TITLE`, `SHAPE_ABBREVIATION`) VALUES (150000045, 10, 43.1002, -75.2956, 'Custom', NULL, NULL, 'New%20York%20Mills%2C%20New%20York%20%2810km%', NULL);
INSERT INTO `GEO_SHAPE` (`GEO_SHAPE_ID`, `RADIUS`, `LATITUDE`, `LONGITUDE`, `SHAPE_TYPE`, `PARENT_ID`, `SHAPE_POLYGON`, `SHAPE_TITLE`, `SHAPE_ABBREVIATION`) VALUES (150000046, 10, 40.1117, -78.9258, 'Custom', NULL, NULL, 'Region1', NULL);
UNLOCK TABLES;

SET FOREIGN_KEY_CHECKS = 1;
like image 835
Drew Avatar asked Dec 28 '22 22:12

Drew


2 Answers

Go to the Console, in the top-right corner of Sequel Pro. Right-click on the command that failed to run and copy it.

Paste it into the Query section at the top of Sequel Pro and run it manually.

That will allow you to see the error that is preventing the row from being deleted and fix it.

like image 193
craned Avatar answered Dec 31 '22 13:12

craned


Just tried it with your data, and it worked as expected:

DELETE FROM `GEO_SHAPE` WHERE GEO_SHAPE_ID = 150000042;
-- Query OK, 1 row affected (0.00 sec)

Result:

+--------------+--------+----------+-----------+------------+-----------+---------------+-----------------------------------------------+--------------------+
| GEO_SHAPE_ID | RADIUS | LATITUDE | LONGITUDE | SHAPE_TYPE | PARENT_ID | SHAPE_POLYGON | SHAPE_TITLE                                   | SHAPE_ABBREVIATION |
+--------------+--------+----------+-----------+------------+-----------+---------------+-----------------------------------------------+--------------------+
|           57 |   NULL |     NULL |      NULL | Region     |        10 | NULL          | Washington                                    | WA                 | 
|           58 |   NULL |     NULL |      NULL | Region     |        10 | NULL          | West Virginia                                 | WV                 | 
|           59 |   NULL |     NULL |      NULL | Region     |        10 | NULL          | Wisconsin                                     | WI                 | 
|    150000043 |     10 | -33.8833 |   151.167 | Custom     |      NULL | NULL          | Annandale%2C%20New%20South%20Wales%20%2810km% | NULL               | 
|    150000048 |     10 |    -27.5 |   153.017 | Custom     |      NULL | NULL          | Brisbane%2C%20Queensland%20%2810km%20radius%2 | NULL               | 
|    150000045 |     10 |  43.1002 |  -75.2956 | Custom     |      NULL | NULL          | New%20York%20Mills%2C%20New%20York%20%2810km% | NULL               | 
|    150000046 |     10 |  40.1117 |  -78.9258 | Custom     |      NULL | NULL          | Region1                                       | NULL               | 
+--------------+--------+----------+-----------+------------+-----------+---------------+-----------------------------------------------+--------------------+

Did you try:

SELECT * FROM `GEO_SHAPE` WHERE GEO_SHAPE_ID = 150000042;
like image 39
Daniel Vassallo Avatar answered Dec 31 '22 12:12

Daniel Vassallo