返回列表 发帖
查看: 3626|回复: 6

[求助] 分表升级失败

2

主题

2

回帖

10

积分

初学乍练

贡献
0 点
金币
5 个
发表于 2023-1-12 13:07:45 | 查看全部 |阅读模式
执行流程

?step=innodb&table=pre_forum_post_1

  1. (1075) Incorrect table definition; there can be only one auto column and it must be defined as a key
  2. ALTER TABLE forum_post_1 ENGINE=InnoDB;
复制代码


get_scheme_update_sql 没有对分表仅需处理


我知道答案 回答被采纳将会获得1 贡献 已有6人回答
回复

使用道具 举报

2

主题

1410

回帖

2061

积分

应用开发者

啦啦啦~

贡献
58 点
金币
325 个
发表于 2023-1-13 22:45:29 | 查看全部
感谢您的反馈,我们写个了修复,可以参考下。
具体得等测试,测试好了再合并。

  1. if (preg_match("/^pre_forum_post_(\\d+)$/i", $table)) {
  2.         logmessage("$table is special post table, need special alter.");
  3.         $sql = "ALTER TABLE ".str_replace(' pre_', ' '.$config['tablepre'], $table)." MODIFY COLUMN position INT unsigned NOT NULL DEFAULT \'0\'";
  4.         logmessage("RUNSQL ".$sql);
  5.         DB::query($sql);
  6.         logmessage("RUNSQL Success");
  7. } else {
  8.         $sql = get_innodb_scheme_update_sql($table);
  9.         logmessage("RUNSQL ".$sql);
  10.         DB::query($sql);
  11.         logmessage("RUNSQL Success");
  12. }
复制代码
回复

使用道具 举报

3

主题

16

回帖

24

积分

初学乍练

贡献
0 点
金币
4 个
发表于 2023-4-16 16:45:40 | 查看全部
本帖最后由 sohigh 于 2023-4-16 17:15 编辑
老周部落 发表于 2023-1-13 22:45
感谢您的反馈,我们写个了修复,可以参考下。
具体得等测试,测试好了再合并。

$sql = "ALTER TABLE ".str_replace(' pre_', ' '.$config['tablepre'], $table)." MODIFY COLUMN position INT unsigned NOT NULL DEFAULT \'0\'";

这句没执行
logmessage("$table is special post table, need special alter.");都没显示在日志里

回复

使用道具 举报

14

主题

3335

回帖

5674

积分

应用开发者

贡献
395 点
金币
169 个
QQ
发表于 2023-4-16 17:15:12 | 查看全部
sohigh 发表于 2023-4-16 16:45
pre_forum_post_1  的 position列已经变成了自增列,也是主键了。但是还报错

(1075) Incorrect table defi ...

去掉 自增 就好了
回复

使用道具 举报

3

主题

16

回帖

24

积分

初学乍练

贡献
0 点
金币
4 个
发表于 2023-4-16 17:16:38 | 查看全部

是我搞错了,问题是
$sql = "ALTER TABLE ".str_replace(' pre_', ' '.$config['tablepre'], $table)." MODIFY COLUMN position INT unsigned NOT NULL DEFAULT \'0\'";

这句没执行
logmessage("$table is special post table, need special alter.");都没显示在日志里
回复

使用道具 举报

14

主题

3335

回帖

5674

积分

应用开发者

贡献
395 点
金币
169 个
QQ
发表于 2023-4-16 17:24:55 | 查看全部
sohigh 发表于 2023-4-16 17:16
是我搞错了,问题是
$sql = "ALTER TABLE ".str_replace(' pre_', ' '.$config['tablepre'], $table)."  ...

自己 手动操作数据库表 就好了……

Navicat连接数据库,  表上 右键  设计 数据库, 选中字段,  去除 自增勾选, 然后保存 就可以了
回复

使用道具 举报

3

主题

16

回帖

24

积分

初学乍练

贡献
0 点
金币
4 个
发表于 2023-4-19 21:17:40 | 查看全部
天外飘仙 发表于 2023-4-16 17:24
自己 手动操作数据库表 就好了……

Navicat连接数据库,  表上 右键  设计 数据库, 选中字段,  去除 自增 ...

我是这样操作的,我想说怎么脚本没用,是不是哪里错了,你们再查下?方便后面的人
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2025-8-4 14:54 , Processed in 0.091660 second(s), 31 queries .

Powered by Discuz! W1.0 Licensed

Copyright © 2001-2025 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表