创建算法=未定义的定义

mra*_*dol 10 mysql database phpmyadmin

我从远程服务器备份了一些数据库,当我尝试导入该备份时,我的本地服务器出现问题.我在这一行中收到错误:

CREATE ALGORITHM=UNDEFINED DEFINER=root@% SQL SECURITY DEFINER VIEW tematics_field AS select.....

两台服务器都有一个mysql 5.5.2x.两个服务器的用户不同.

mra*_*dol 16

我只想:

CREATE VIEW tematics_field AS select....
Run Code Online (Sandbox Code Playgroud)

一切都很完美,导入工作做得很好.


Bil*_*win 10

您需要将主机名(或本例中的通配符)放在单引号中:

CREATE ALGORITHM=UNDEFINED DEFINER=root@'%' SQL SECURITY DEFINER VIEW tematics_field AS 
select.....
Run Code Online (Sandbox Code Playgroud)

  • 什么是不同的bewin"CREATE ALGORITHM = UNDEFINED DEFINER = root @'%'SQL安全定义视图"和简单的"创建视图"? (5认同)

小智 5

MySql错误:#1227 –访问被拒绝;您需要(至少其中一种)SUPER权限才能执行此操作

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `inventory_stock_1` AS SELECT DISTINCT `legacy_stock_status`.`product_id` AS `product_id`,`legacy_stock_status`.`website_id` AS `website_id`,`legacy_stock_status`.`stock_id` AS `stock_id`,`legacy_stock_status`.`qty` AS `quantity`,`legacy_stock_status`.`stock_status` AS `is_salable`,`product`.`sku` AS `sku` FROM (`cataloginventory_stock_status` `legacy_stock_status` JOIN `decg_catalog_product_entity` `product` ON(`legacy_stock_status`.`product_id` = `product`.`entity_id`)) ;
Run Code Online (Sandbox Code Playgroud)

固定解决方案:

问题是您将definer设置为root,而不是当前运行的用户,因此需要SUPER privilege。您可以在RDS中创建一个名为root的用户,并使用root运行命令,或者简单地

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER
Run Code Online (Sandbox Code Playgroud)

改成:

CREATE ALGORITHM=UNDEFINED DEFINER=CURRENT_USER SQL SECURITY INVOKER
Run Code Online (Sandbox Code Playgroud)

了解有关CURRENT_USER的更多信息最终的SQL查询如下

CREATE ALGORITHM=UNDEFINED DEFINER=CURRENT_USER SQL SECURITY INVOKER VIEW `inventory_stock_1` AS SELECT DISTINCT `legacy_stock_status`.`product_id` AS `product_id`,`legacy_stock_status`.`website_id` AS `website_id`,`legacy_stock_status`.`stock_id` AS `stock_id`,`legacy_stock_status`.`qty` AS `quantity`,`legacy_stock_status`.`stock_status` AS `is_salable`,`product`.`sku` AS `sku` FROM (`cataloginventory_stock_status` `legacy_stock_status` JOIN `decg_catalog_product_entity` `product` ON(`legacy_stock_status`.`product_id` = `product`.`entity_id`)) ;
Run Code Online (Sandbox Code Playgroud)

谢谢。发自:MazziTorch