在本文中,我们将为您详细介绍MySQL错误#1305功能db.sys_exec不存在的相关知识,并且为您解答关于mysql报错1305的疑问,此外,我们还会提供一些关于com.mysql.jdbc.e
在本文中,我们将为您详细介绍MySQL错误#1305功能db.sys_exec不存在的相关知识,并且为您解答关于mysql报错1305的疑问,此外,我们还会提供一些关于com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx、Deepin/Ubuntu上安装MySQL出现MySQL候选项路径/etc/mysql/mysql.cnf不存在、Mysql 1050错误“表已存在”实际上不存在、MySQL 5.0 全新的SQL句法sp_executesql_MySQL的有用信息。
本文目录一览:- MySQL错误#1305功能db.sys_exec不存在(mysql报错1305)
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx
- Deepin/Ubuntu上安装MySQL出现MySQL候选项路径/etc/mysql/mysql.cnf不存在
- Mysql 1050错误“表已存在”实际上不存在
- MySQL 5.0 全新的SQL句法sp_executesql_MySQL
MySQL错误#1305功能db.sys_exec不存在(mysql报错1305)
我正在使用phpmyadmin。我在mysql中使用触发器,该触发器在表中插入某些内容后会调用php脚本。我的触发器包含此内容。
DECLARE result INT;SET result=(select sys_exec(''C:/xampp/php/php.exe C:/xampp/htdocs/mysite/hello.php''));
但是我在尝试向表中插入内容时遇到了此错误。
#1305 FUNCTION db.sys_exec does not exists
(我的数据库名称是db)。谢谢。
答案1
小编典典sys_exec
不是标准的mysql函数。它由外部UDF插件提供,必须单独安装:https
:
//github.com/mysqludf/lib_mysqludf_sys#readme
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx
一直用oracle,好久没有用mysql,今天搭建了一个mysql的web开发环境。竟然抛出这个异常:
Unknown character set: ''utf8mb4''
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: ''utf8mb4''
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:382)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:456)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:464)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:472)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:477)
at org.springframework.jdbc.core.JdbcTemplate.queryForInt(JdbcTemplate.java:486)
记得创建数据的时候字符集设置的是utf-8:
CREATE DATABASE service DEFAULT CHARACTER SET utf8;
网上查了各种解决办法:
最后是由于Mysql驱动版本引起的:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
换成
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
结果不行,
换成下面的maven依赖问题解决,
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
搞死人...
Deepin/Ubuntu上安装MySQL出现MySQL候选项路径/etc/mysql/mysql.cnf不存在
MySQL候选项路径/etc/mysql/mysql.cnf不存在
ubuntu系统:今天打开电脑登陆mysql:mysql -uroot -p 结果发现了这个错误
Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock''
执行以下命令,重装MySQL
sudo apt-get remove --purge mysql-\*
sudo apt-get install mysql-server mysql-client
解决了问题。
附:MySQL命令
terwer@terwer-PC:$ service mysql restart
terwer@terwer-PC:$ sudo mysql -uroot -p123456
mysql> quit
Bye
terwer@terwer-PC:$
mysql> quit
Bye
terwer@terwer-PC:$
terwer@terwer-PC:~$ service mysql stop
terwer@terwer-PC:~$
Mysql 1050错误“表已存在”实际上不存在
如何解决Mysql 1050错误“表已存在”实际上不存在?
听起来好像您有Schroedinger的桌子 …
严重的是,现在您的表可能已损坏。尝试:
DROP TABLE IF EXISTS contenttype
REPAIR TABLE contenttype
- 如果您有足够的权限,请删除数据文件(在/ MysqL / data / db_name中)
解决方法
我要添加此表:
CREATE TABLE contenttype (
contenttypeid INT UNSIGNED NOT NULL AUTO_INCREMENT,class VARBINARY(50) NOT NULL,packageid INT UNSIGNED NOT NULL,canplace ENUM(''0'',''1'') NOT NULL DEFAULT ''0'',cansearch ENUM(''0'',cantag ENUM(''0'',''1'') DEFAULT ''0'',canattach ENUM(''0'',isaggregator ENUM(''0'',PRIMARY KEY (contenttypeid),UNIQUE KEY packageclass (packageid,class)
);
我得到了1050个“表已经存在”
但是该表不存在。有任何想法吗?
编辑:更多细节,因为每个人似乎都不相信我:)
DESCRIBE contenttype
产量:
1146-表’gunzfact_vbforumdb.contenttype’不存在
和
CREATE TABLE gunzfact_vbforumdb.contenttype(
contenttypeid INT UNSIGNED NOT NULL AUTO_INCREMENT,class VARBINARY( 50 ) NOT NULL,canplace ENUM( ''0'',''1'' ) NOT NULL DEFAULT ''0'',cansearch ENUM( ''0'',cantag ENUM( ''0'',''1'' ) DEFAULT ''0'',canattach ENUM( ''0'',isaggregator ENUM( ''0'',PRIMARY KEY ( contenttypeid ),
产量:
1050-表“ contenttype”已存在
MySQL 5.0 全新的SQL句法sp_executesql_MySQL
从MySQL 5.0 开始,支持了一个全新的SQL句法:
PREPARE stmt_name FROM preparable_stmt;
EXECUTE stmt_name [USING @var_name [, @var_name] ...];
{DEALLOCATE | DROP} PREPARE stmt_name;
通过它,我们就可以实现类似 MS SQL 的 sp_executesql 执行动态SQL语句!
同时也可以防止注入式攻击!
为了有一个感性的认识,
下面先给几个小例子:
mysql> PREPARE stmt1 FROM ''SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse'';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;
mysql> SET @s = ''SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse'';
mysql> PREPARE stmt2 FROM @s;
mysql> SET @a = 6;
mysql> SET @b = 8;
mysql> EXECUTE stmt2 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 10 |
+------------+
mysql> DEALLOCATE PREPARE stmt2;
如果你的MySQL 版本是 5.0.7 或者更高的,你还可以在 LIMIT 子句中使用它,示例如下:mysql> SET @a=1;mysql> PREPARE STMT FROM "SELECT * FROM tbl LIMIT ?";
mysql> EXECUTE STMT USING @a;
mysql> SET @skip=1; SET @numrows=5;
mysql> PREPARE STMT FROM "SELECT * FROM tbl LIMIT ?, ?";
mysql> EXECUTE STMT USING @skip, @numrows; 使用 PREPARE 的几个注意点:
A:PREPARE stmt_name FROM preparable_stmt;
预定义一个语句,并将它赋给 stmt_name ,stmt_name 是不区分大小写的。
B: 即使 preparable_stmt 语句中的 ? 所代表的是一个字符串,你也不需要将 ? 用引号包含起来。
C: 如果新的 PREPARE 语句使用了一个已存在的 stmt_name ,那么原有的将被立即释放! 即使这个新的 PREPARE 语句因为错误而不能被正确执行。
D: PREPARE stmt_name 的作用域是当前客户端连接会话可见。
E: 要释放一个预定义语句的资源,可以使用 DEALLOCATE PREPARE 句法。
F: EXECUTE stmt_name 句法中,如果 stmt_name 不存在,将会引发一个错误。
G: 如果在终止客户端连接会话时,没有显式地调用 DEALLOCATE PREPARE 句法释放资源,服务器端会自己动释放它。
H: 在预定义语句中,CREATE TABLE, DELETE, DO, INSERT, REPLACE, SELECT, SET, UPDATE, 和大部分的 SHOW 句法被支持。
G: PREPARE 语句不可以用于存储过程,自定义函数!但从 MySQL 5.0.13 开始,它可以被用于存储过程,仍不支持在函数中使用! 下面给个示例: CREATE PROCEDURE `p1`(IN id INT UNSIGNED,IN name VARCHAR(11))BEGIN lable_exit: BEGIN SET @SqlCmd = ''SELECT * FROM tA ''; IF id IS NOT NULL THEN SET @SqlCmd = CONCAT(@SqlCmd , ''WHERE id=?''); PREPARE stmt FROM @SqlCmd; SET @a = id; EXECUTE stmt USING @a; LEAVE lable_exit; END IF; IF name IS NOT NULL THEN SET @SqlCmd = CONCAT(@SqlCmd , ''WHERE name LIKE ?''); PREPARE stmt FROM @SqlCmd; SET @a = CONCAT(name, ''%''); EXECUTE stmt USING @a; LEAVE lable_exit; END IF; END lable_exit;END; CALL `p1`(1,NULL);CALL `p1`(NULL,''QQ'');DROP PROCEDURE `p1`;
关于MySQL错误#1305功能db.sys_exec不存在和mysql报错1305的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx、Deepin/Ubuntu上安装MySQL出现MySQL候选项路径/etc/mysql/mysql.cnf不存在、Mysql 1050错误“表已存在”实际上不存在、MySQL 5.0 全新的SQL句法sp_executesql_MySQL等相关知识的信息别忘了在本站进行查找喔。
本文标签: