MySQL #1025 Ошибка

Я получаю ошибку #1025 при выполнении этого запроса.

SQL-запрос:

ALTER TABLE  `routes` CHANGE  `end_loc`  `end_loc` VARCHAR( 500 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

MySQL сказал:

#1025 - Error on rename of './ridestr/#sql-1f44_26eeb' to './ridestr/routes' (errno: 150) 

Что забавно, потому что я настроил этот запрос в PHP MyAdmin... Я не знаю, почему я получаю ошибку внешнего ключа... Я просто пытаюсь изменить что-то с int на varchar

Кто-нибудь может помочь?

2 ответа

Решение

Если routes.end_loc столбец используется во внешнем ключе, тогда вы не можете изменить его тип данных. Вам нужно будет удалить внешний ключ, изменить тип данных родительского и дочернего столбцов, а затем снова добавить внешний ключ.

Для получения подробной информации об этой ошибке, запустите SHOW ENGINE INNODB STATUS\G а затем посмотрите на LATEST FOREIGN KEY ERROR раздел.

Но это очень сложно, если вы хотите изменить в целом charset на utf8 всех таблиц, вот что я сделал

     1 export the database (all tables) and open by notepad

     2 replace all "latin1" by utf8 and save

     3 then try to restore using mysqlAdministrator but it says wrong

     4 so try restoring again but you have to select ignore errors radio button
     5 it tries to restore some tables 

     6 then you have to restore again until no error message 

я знаю, что это трудный путь, но я уверен, что это будет работать и для вас

Другие вопросы по тегам