Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将1个InnoDB表添加到满是MyISAM表的数据库(效果)_Php_Mysql_Innodb_Myisam - Fatal编程技术网

Php 将1个InnoDB表添加到满是MyISAM表的数据库(效果)

Php 将1个InnoDB表添加到满是MyISAM表的数据库(效果),php,mysql,innodb,myisam,Php,Mysql,Innodb,Myisam,我们有一个满是MyISAM表的数据库。问题是,我们只需要在一个名为payments的表上进行交易,我的问题是,这样行吗?我的意思是将该表的引擎更改为InnoDB,并在php上使用事务,这样做行吗?还是我必须胡闹,做更多的事情?这会影响我的数据库吗?该表是隔离的,它没有外键,因为MyISAM不支持外键 提前交付。如下所述: 重要的是要记住,不局限于对整个服务器或架构使用相同的存储引擎:可以对架构中的每个表使用不同的存储引擎 因此,是的,您的建议将起作用(当然,前提是您只希望在支付表上实现ACID合

我们有一个满是MyISAM表的数据库。问题是,我们只需要在一个名为
payments
的表上进行交易,我的问题是,这样行吗?我的意思是将该表的引擎更改为
InnoDB
,并在php上使用事务,这样做行吗?还是我必须胡闹,做更多的事情?这会影响我的数据库吗?该表是隔离的,它没有外键,因为
MyISAM
不支持外键

提前交付。

如下所述:

重要的是要记住,不局限于对整个服务器或架构使用相同的存储引擎:可以对架构中的每个表使用不同的存储引擎


因此,是的,您的建议将起作用(当然,前提是您只希望在
支付
表上实现ACID合规性)。

那么mysql/php将知道如何处理该表,并且它将无问题地进行交易?@DeusDeit:mysql将,是的。当然,像往常一样,您必须告诉MySQL何时开始事务以及何时希望提交/回滚事务。MySQLi和PDO都允许您通过它们的api来实现这一点;然而,您现在无论如何都不应该使用的古老的(现在已经弃用的)ext/mysql,却没有-您必须通过SQL执行事务操作。这就提出了另一个问题。我不是开发团队的一员,我只是加入了开发团队。问题是我在我的项目中使用了PDO,但是他们用旧的mysql API创建了这个项目。新的问题是,如果我用
PDO
在php上做我的部分,而他们用纯
mysql
API做其余的部分,这会有任何影响吗?这安全吗?@DeusDeit:这是安全的,前提是人们意识到各自的操作将通过不同的数据库连接执行(因此任何
会话
状态都不会被保留)。我强烈鼓励他们把一切都转移到PDO上。问题是,这是一个很小的改变,我同意他们应该把它转移到PDO上,但他们已经做的对他们来说很好。我将添加的更改将与它们的
PHPs
分开,因此不会有任何连接问题。我想我学到了我需要的,我可以开始应用它。竖起大拇指,然后点击ty。只需释放在事务内部对非事务表(如
MyISAM
)所做的更改,即可提交,而不考虑任何
回滚