【问题标题】:MySQL #1025 ErrorMySQL #1025 错误
【发布时间】:2011-03-17 11:20:57
【问题描述】:

运行此查询时出现 #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

谁能帮忙?

【问题讨论】:

  • errno: 150 通常表示存在外键问题 - 您能否发布您的结构查询以便我们更好地帮助您?
  • 您是否尝试过在查询前禁用外键检查并在查询后再次启用它们?

标签: mysql mysql-error-1025


【解决方案1】:

如果在外键中使用了routes.end_loc 列,则不能更改其数据类型。您需要删除外键,更改父列和子列的数据类型,然后再次添加外键。

有关此错误的详细信息,请运行 SHOW ENGINE INNODB STATUS\G,然后查看 LATEST FOREIGN KEY ERROR 部分。

【讨论】:

    【解决方案2】:

    但是如果你想将所有表的整个字符集更改为 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 
    

    我知道这很困难,但我相信这对你也有用

    【讨论】:

      猜你喜欢
      • 2016-02-08
      • 1970-01-01
      • 2016-01-18
      • 2013-11-09
      • 2013-08-25
      • 2011-07-17
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      相关资源
      最近更新 更多