测试数据库的模式和数据 - https://gist.github.com/koceg/435c0d2b1246a69d048f
我的目标是更新板表,当有人插入的新行objects_properties表.列更新的名称是动态的-它取决于PROPERTY_ID从objects_properties.
到目前为止,我已经创建了一个触发器和一个存储过程,但是我收到了这个错误:
存储函数或触发器中不允许动态sql.
我做错了还是mysql不允许在触发器中使用预准备语句调用存储过程?如果是这样,我该怎么办?
我有一个想法,但即使在伪代码中它也很难看.真正的SQL会更糟糕,因为会有几十个代码:
SWITCH (property_code)
CASE 'name'
INSERT INTO boards (id, name) VALUES (@object_id, @value) ON DUPLICATE KEY UPDATE name = @value;
CASE 'address'
INSERT INTO boards (id, address) VALUES (@object_id, @value) ON DUPLICATE KEY UPDATE address = @value;
CASE 'district'
INSERT INTO boards (id, district) VALUES (@object_id, @value) ON DUPLICATE KEY UPDATE district = @value;
Run Code Online (Sandbox Code Playgroud)
PS我无法将此逻辑移动到我的应用程序,因为该数据库被多个应用程序使用.
我有一个站点,在Ubuntu 16.04服务器(OpenSSL 1.0.2h)上的Nginx 1.10.0上运行.我想通过HTTP/2服务这个站点,所以我相应地配置了Nginx:
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server
Run Code Online (Sandbox Code Playgroud)
它在我的办公室Ubuntu 15.10桌面上的FF 47和Chrome 51以及我家Ubuntu 15.10桌面上的相同浏览器中都能正常工作.
但是在我的家中,Windows 10台式机和笔记本电脑HTTP/2仅适用于FF.Chrome 51,IE 11和Edge在此网站上使用HTTP/1.1.
所以,我很困惑.这项服务表示,我的网站支持HTTP/2和ALPN(从版本51开始,HTTP/2需要在Chrome中运行).
Chrome版本和功能完全相同:
HTTPS工作,Chrome开发工具中的安全面板显示,一切都是安全的.
Chrome,IE和Edge中的此演示在FF中显示消息" 此浏览器未启用HTTP/2. "和" 您的浏览器支持HTTP/2! ".但是在所有这些浏览器中,medium.com上的HTTP/2都可以正常工作.
所以,我的问题是:发生了什么以及如何解决这个问题?