正在读取数据,页面载入中,请稍后...

彻底解决:系统找不到您所指定的表,请手工创建这个表

使用织梦的小伙伴们,织梦复制内容模型,报错系统找不到您所指定的表,请手工创建这个表。织梦的通病,内容模型已经复制成功了,但数据库表却需要手动添加,说句实话,我都想一键复制了,哪里还有手动创建表的心情,把小白迷得根本找不到北,也不会手动创建这个表。所以,下面小千就教大家,改改代码就行了,哪里需要手动创建哦。

彻底解决:系统找不到您所指定的表,请手工创建这个表 - 全民博客

能用代码解决的事情,还要手动创建这个表,真的是考验小白的动手能力啊。有人说,啊...我没遇到过,我复制所有的内容模型,都是自带主角光环,没有遇到一次复制内容模型失败的。无论是PHP5、PHP7环境,你多复制几次,你就一直复制,总有一次遇到提示:系统找不到您所指定的表,请手工创建这个表。真的不是每次复制都自带主角气运的。

好了,废话就不多说了,直接上代码,这个补丁,无论是新版,还是旧版,无论是织梦CMS的,还是织梦BIZ的,都没有考虑到处理复制失败的,都是请手工创建这个表考验小白。莫慌,下面小千就上教程啦,当你改完这个以后,系统找不到您所指定的表,请手工创建这个表,压根就不会存在了,也不会再提示请手工创建这个表了,要么复制成功,要么复制失败,再重新复制就行啦。

打开 /dede/mychannel_edit.php 搜索

系统找不到您所指定的表

看到下面这个判断

if (!$dsql->IsTable($trueTable)) {
    ShowMsg("系统找不到您所指定的表 $trueTable ,请手工创建这个表", "-1");
    exit();
}

把这整个判断改为

if (!$dsql->IsTable($trueTable)) {
	$dsql->ExecuteNoneQuery(" UPDATE `#@__channeltype` SET `issystem` = '0' WHERE `id` = '{$id}';");
	require_once(DEDEINC."/typeunit.class.admin.php");
	$myrow = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$id'");
	if(!is_array($myrow)) {
		ShowMsg('你所指定的频道信息不存在!','-1');
		exit();
	}
	//检查频道的表是否独占数据表
	$addtable = str_replace($cfg_dbprefix, '', str_replace('#@__', $cfg_dbprefix, $myrow['addtable']));
	$row = $dsql->GetOne("SELECT COUNT(id) AS dd FROM `#@__channeltype` WHERE  addtable like '{$cfg_dbprefix}{$addtable}' OR addtable LIKE CONCAT('#','@','__','$addtable') ; ");
	$isExclusive2 = ($row['dd'] > 1 ? 0 : 1);
	//获取与频道关连的所有栏目id
	$tids = '';
	$dsql->Execute('qm', "SELECT id FROM `#@__arctype` WHERE channeltype='$id'");
	while ($row = $dsql->GetArray('qm')) {
		$tids .= ($tids == '' ? $row['id'] : ','.$row['id']);
	}
	//删除相关信息
	if ($tids != '') {
		$dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE typeid IN($tids); ");
		$dsql->ExecuteNoneQuery("DELETE FROM `{$myrow['maintable']}` WHERE typeid IN($tids); ");
		$dsql->ExecuteNoneQuery("DELETE FROM `#@__arctype` WHERE id IN ($tids); ");
	}
	//删除附加表或附加表内的信息
	if ($isExclusive2 == 1) {
		$dsql->ExecuteNoneQuery("DROP TABLE IF EXISTS `{$cfg_dbprefix}{$addtable}`;");
	} else {
		if ($tids != '' && $myrow['addtable'] != '') {
			$dsql->ExecuteNoneQuery("DELETE FROM `{$myrow['addtable']}` WHERE typeid IN ($tids); ");
		}
	}
	//删除频道配置信息
	$dsql->ExecuteNoneQuery("DELETE FROM `#@__channeltype` WHERE id='$id' ");
	//更新栏目缓存
	UpDateCatCache($dsql);
	ShowMsg("复制模型失败,请重新复制模型", "mychannel_main.php");
	exit();
}

呃...这个意思大概就是,无论你复制的啥内容模型,先把系统模型不允许删除,改为可删除的系统内容模型,然后删除系统内容模型就行了,大概就是这个意思,再不懂的,直接复制修改就对路了,不要问那么多为什么,其实我也不知道为什么。我只知道,能用代码解决的事情,干嘛还要去手动修改呢。

本文结束

评论专区

发表评论

评论列表(无评论)