如何在MySQL中创建一个使用PHP中另一个数据库视图名称的视图?

时间:2015-11-16 12:49:57

标签: php mysql

我正在尝试使用php中的这行代码在MySQL数据库中创建一个与另一个数据库中的视图同名的视图。

mysql_query('CREATE VIEW `' . $targetDB . '`.`' . $row[0] . '` LIKE `' . $sourceDB . '`.`' . $row[0] . '`') or die(mysql_error());

然而,当我运行我的代码时,我收到此错误

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便使用“copyinrdb附近使用的正确语法。abnormal_limit_view'在第1行

我做错了什么我的完整代码是否有帮助:

    <?php
set_time_limit(0);
function duplicateTables($sourceDB=NULL, $targetDB=NULL) {
    $link = mysql_connect('my_host', 'my_user', 'my_pass') or die(mysql_error()); // connect to database
                                $results = mysql_query('SHOW FULL TABLES FROM copyinrdb WHERE TABLE_TYPE= "VIEW"') or die(mysql_error());
        while($row = mysql_fetch_row($results)) {
            mysql_query('CREATE VIEW `' . $targetDB . '`.`' . $row[0] . '` LIKE `' . $sourceDB . '`.`' . $row[0] . '`') or die(mysql_error());
            mysql_query('INSERT INTO `' . $targetDB . '`.`' . $row[0] . '` SELECT * FROM `' . $sourceDB . '`.`' . $row[0] . '`') or die(mysql_error());
        }
        mysql_free_result($results);

    mysql_close($link);
} // end duplicateTables()
duplicateTables('copyinrdb', 'copytest1');
?>

2 个答案:

答案 0 :(得分:0)

namespace app { let app =angular.module('foo',[]); app.factory(factories);//for registering whatever is there in factories namespace } namespace app.factories { export class fooFactory { static $inject = ['fooHelperService'] constructor(fooHelperService: services.fooHelperService) { return { fooFunc: () => { return 'hellow world' } } } } } 根本不是有效的mysql代码。

不能在那里使用LIKE关键字。

语法是:

CREATE VIEW db1.viewname LIKE db2.viewname

[Python Arabic Reshaper

答案 1 :(得分:0)

mysql中的LIKE语句中没有CREATE VIEW子句,这就是您收到错误消息的原因。在循环处理中,视图列表通过发出和解析SHOW CREATE VIEW步骤来获取视图的create view语句,或者查询information_schema.views tableview_definition列并在其前面添加相应的创建视图语法。

如果直接从包含view_definition的information_schema.views查询视图列表而不是使用show full tables命令,它甚至会更快。