我有这个问题,我在php中创建了一个用户定义的函数。但它有一些problems.Let me的详细说明。假设我已经创建了这个函数
<?php
include 'db_connect.php';
$sql="DROP FUNCTION IF EXISTS testf";
$result=mysql_query($sql) or die (mysql_error());
$sql="CREATE FUNCTION testf() RETURNS text
DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE Out
正如您所知道的,小型版本的MariaDB (5.5-)应该与MySQL兼容(我已经发现了缺陷,但他们说它的90%)。我在我们的环境中都使用MySQL,在AWS上使用MySQL,在本地Dev服务器和Dev盒上使用Maria。我目前正试图破解一个函数,该函数将自动生成带有随机数据的行。
表的结构将非常简单,如下所示
DROP DATABASE IF EXISTS `foodb`;
CREATE DATABASE `foodb`;
USE `foodb`;
DROP TABLE IF EXISTS `footable`;
CREATE TABLE `footable` (
`id` int(1
-mysql 5.6.2 -GLOBAL event_scheduler = ON
在MYSQL数据库上使用phpMyAdmin客户端。我没有设置分隔符,因为我知道在这条语句中不能。如果我删除最后一个“;”,它将失败,并显示“error near END.‘”。在以下格式中,失败并显示:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at
尝试在mysql中创建每日事件:
CREATE EVENT ResetStatus
ON SCHEDULE
EVERY 1 DAY
DO
BEGIN
IF (DATE('2013-04-05') = CURDATE()) THEN
UPDATE mytable
SET resetstatus = 1
WHERE id = (SELECT pid FROM usertable WHERE priority = '
这是我的触发器,我得到了MySQL语法错误。我想减少sms_index表sms_count列值的余额。
CREATE TRIGGER sms_log_update AFTER UPDATE ON sms_index
FOR EACH ROW
BEGIN
IF NEW.approved_status = '1' THEN
UPDATE sms_package SET balance = (balance - OLD.sms_count) WHERE group_id = OLD.ins_group_id;
END IF;
END;
在phpMyAdmin上与mysql合作
SQL:
drop PROCEDURE if EXISTS mi;
CREATE PROCEDURE mi() //<-- line 3
BEGIN
INSERT INTO User ( `name` , `password` ) VALUES ('value1', 'value2');
SET out_param = LAST_INSERT_ID();
END
CALL mi();
“drop”用于多个测试。
我们有User桌,有id primary key,name varchar,passwor
我正在用mysql编写一个存储过程,它只返回提供了ID的行,或者在没有提供ID的情况下返回所有表。
CREATE DEFINER=`root`@`localhost` PROCEDURE `SLICE_GET`(`slice_id` int)
BEGIN
SELECT *
FROM `thesis_db`.`SLICE_INFO`
WHERE (SLICE_ID = `slice_id` OR `slice_id` IS NULL);
END
我已经在ms-sql中使用了很多年了,但它似乎不适用于mysql,因为无论传递哪个ID,该过程都会返回整个表。这里我漏掉了什么?
我想知道您是否可以告诉我ff sql语句有什么问题:
insert into translog
select * from transponder_logs where trans_log_id < 150000;
delete from transponder_logs where trans_log_id < 150000
这个语句在sql中运行得很好,但是当我在event scheduler上使用它时,它会给我一个语法错误。
错误信息是:
“您的SQL语法出现了错误;请检查与mysql服务器版本对应的手册,以便在第3行的'delete from transpo
这里有一个特殊的场景:我试图将一个以制表符分隔的文件导入到mysql中,其中有一些行的价格列在1000以上。当我完成导入时,逗号后面的值将被排除,并且我的表中最终只有1。在Linux和Windows环境中试用,结果相同。
例如,如果以制表符分隔的文件中的第1行、第1列包含值1,564.50,则我的MySQL表的第1行第1列中的值最终为1。这是我正在使用的语句。
LOAD DATA LOCAL INFILE 'blah.txt'
INTO TABLE `table1`
FIELDS TERMINATED BY '\t'
OPTIONALLY ENCLOSED
我是MYSQL的新手,在执行过程中遇到了一些问题。它在SQLVersion5.7.28中运行得很好,但在SQL5.6.41中抛出了以下错误
ERROR:
SQL query:
create procedure menus_hier_upward
(
in p_menu_id smallint unsigned
)
begin
declare v_done tinyint unsigned default(0)
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual
我正在编写SQL,以便为数据库中的表创建触发器。当我们生成一个新的数据库时,这段代码应该在脚本中运行。
为了理解如何做到这一点,我一直在阅读SQL,并最终想出了这样一个查询:
DELIMITER $$
CREATE TRIGGER calendar_event_after_insert AFTER INSERT
ON calendar_event
FOR EACH ROW
BEGIN
IF @log_calendar_event_id = 'YES'
THEN
...
END IF;
IF @log_calendar_event_name = '
我试图在mysql中定义一个函数(mysql-服务器版本8.0),如下所示:
CREATE FUNCTION myVeryCoolFunc ( json1 JSON, json2 JSON )
RETURNS JSON
DETERMINISTIC
BEGIN
DECLARE abc JSON;
DECLARE foo INT;
DECLARE bar INT;
...
但是这个消息失败了
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server v
有一个脚本,我可以在mysql中复制和运行,但是在php5 mysql_query中尝试相同的脚本时会爆炸。脚本的一部分:
-- sync shadow with users
drop trigger users_post_insert;
delimiter $$
create trigger users_post_insert after insert on users
for each row
begin
insert into shadow( usr_id ) values( new.usr_id );
end$$
delimiter ;
引发错误:
You hav
下面的代码给出了许多与分号相关的错误。我是MySql的新手,所以没有线索。
CREATE PROCEDURE `sp_get_orderbystatus`(p_status_id int)
BEGIN
declare v int;
if(p_status_id = 1) then
begin
set v = 1;
end;
end if;
END
我有以下函数,可以在MySQL v5.7中创建它,但不能在MySQL 8(8.0.13)中创建它:
CREATE FUNCTION IsRoomAvailable(rid INT,fymd DATE,tymd DATE,bid INT)
RETURNS BOOL
READS SQL DATA
BEGIN
DECLARE bids INT;
SELECT COUNT(*) INTO bids
FROM bookings AS b
WHERE ((b.bstart<tymd AND b.bend>=fymd) OR (b.bstart<=fymd A
我不能向我的MySql数据库添加自定义函数,即使是这样的简单函数也有问题
DELIMITER $$
DROP FUNCTION IF EXISTS `foo`$$
CREATE FUNCTION `foo`(IN doWork boolean) RETURNS boolean
NO SQL
DETERMINISTIC
BEGIN
return doWork;
END%%
DELIMITER ;
当我执行上面的查询时,phpmyadmin显示一切正常,但是当我想调用这个函数时,phpmyadmin说找不到这个函数,而且information_schema中的表例程也不包含它
我发现这个函数用于大写字符串中单词的第一个字母,但是当我尝试在PHPMyadmin中用SQL运行它时,它在第8行出现了语法错误。有人能帮我找出问题出在哪里吗?代码如下:
CREATE FUNCTION CAP_FIRST (input VARCHAR(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE len INT;
DECLARE i INT;
SET len = CHAR_LENGTH(input);
SET input = LOWER(input);
SET i = 0;
WHILE (i < len) DO
我正在使用MySQL Workbench 8.0CE,我正在尝试创建一个存储过程来显示我的表中的两个字段。我收到以下错误:
Error Code: 1064. You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '' at line 3
这是我的桌子:
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCH
我正在尝试更新MySQL数据库中存储的函数。更新将被发布到多个设备上,所以我是通过一个update.sql文件进行更新的。
这是函数
DROP FUNCTION `STAFF_MPT`;
CREATE DEFINER=`jelena`@`%` FUNCTION `STAFF_MPT`(`par_stocktake_staff_id` INT) RETURNS DECIMAL(20,0) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN
DECLARE proc_total INT;
DECLARE proc_time
我试图调用一个存储过程来使用插入到表资源中的新行的一些单元格值来创建多个行,但是我得到了一个错误。以下是我的疑问:
CREATE TRIGGER `details` AFTER INSERT ON `resource`
FOR EACH ROW BEGIN
CALL addcopies(NEW.copies, NEW.id, NEW.location);
END;
#1064 -您的SQL语法有一个错误;请检查与您的MySQL服务器版本对应的手册,以便在第3行使用正确的语法。
我做错了什么?
我试图在以下方面修复语法错误,但我看不出这里到底有什么错误:
DELIMITER =
CREATE TRIGGER trigs BEFORE UPDATE ON autoinc
FOR EACH ROW BEGIN
DECLARE num_rows INTEGER;
SELECT (*) INTO num_rows FROM autoinc;
IF num_rows >=3 THEN
DELETE FROM autoinc LIMIT 1;
END IF;
END=
DELIMITER ;
这些错误是:
ERROR 1064 (42000): You have an erro
我有一张叫table的桌子
id int(11) AI PK
name varchar(255)
我将日志存储在table_log中
id int(11) AI PK
action enum('insert', 'update', 'delete')
name varchar(255)
ts timestamp current_timestam
目标:我想创建触发器将日志存储到table_log中
以下是触发因素:
CREATE TRIGGER `table_insert` AFTER
我试图创建一个分隔符,我在Ubuntu上使用MySQLVersion8.0,当我运行命令时,它返回一个语法错误:
SQL Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$ CREATE TRIGGER trigger1 BEFORE INSERT ON whatsapps FOR EACH ROW B
我正在尝试上传mysql的值,我似乎有一个逗号的问题,它认为它是每一列的结尾。或者我不知道如何解释它,但是当我在一个文本字段中有多个逗号时,它会转到下一列,这样就破坏了格式。
这是我的代码。而且我是个新手,所以我希望有一个好的解释。
//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($dat
我的代码中有以下错误:
MySQL说:文档
1064 -您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以便在第20行使用接近“END”的正确语法。
CREATE PROCEDURE updateUser(
IN firstname VARCHAR(20),
IN Vlastname VARCHAR(20),
IN Vemail VARCHAR(50),
IN Vpassword VARCHAR(100),
IN Vyear INT(5),
IN Vgender VARCHAR(10),
IN Vpr
DELIMITER $$
USE `horizon_jake`$$
DROP FUNCTION IF EXISTS `GPS_Distance_Meters`$$
CREATE DEFINER=`horizon_jake`@`localhost` FUNCTION `GPS_Distance_Meters`(lat1 DOUBLE, lng1 DOUBLE, lat2 DOUBLE, lng2 DOUBLE) RETURNS DOUBLE
BEGIN
DECLARE rlo1 DOUBLE;
DECLARE rla1 DOUBLE;
DECLARE rlo2 DO