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
я знаю, что это трудный путь, но я уверен, что это будет работать и для вас