标签: mysql-error-1064

条件NOT NULL情况SQL

我正在尝试计算一个字段,我希望它的行为不同,具体取决于其中一列是否为空.我正在使用MySQL

CASE 
  WHEN reply.replies <> NULL THEN
  24/((UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(qcr.LAST_MOD_TIME)+3600)/3600)*(ces.EXPERT_SCORE+2.5*scs.SIMILARITY)*(EXP(-reply.replies))
  ELSE 1
END as ANSWER_SCORE
Run Code Online (Sandbox Code Playgroud)

这是正确的语法吗?

mysql sql null mysql-error-1064

15
推荐指数
2
解决办法
6万
查看次数

Mysql函数从查询中返回一个值

我想创建一个使用查询计算值的函数,我在返回值时遇到问题:

缩短了,我的查询是:

CREATE FUNCTION func01(value1 INT , monto DECIMAL (10,2)) RETURNS DECIMAL(10,2)
BEGIN
SET @var_name = 0;
select @var_name=if(value1 = 1,monto * table.divisa_dolar,table.monto *divisa_euro) from table where data_init = 1;
return @var_nam;
END
Run Code Online (Sandbox Code Playgroud)

我收到SQL语法错误.

SQL错误(1064):您的SQL语法中有错误;

mysql function mysql-error-1064

14
推荐指数
1
解决办法
7万
查看次数

在MySQL中使用IF()和ON DUPLICATE KEY UPDATE

我有一个运行MySQL查询的PHP脚本.

$query = "INSERT INTO table (col1, col2)
          VALUES('$val1', '$val2')
          ON DUPLICATE KEY UPDATE col2= IF(IS NOT NULL '$val1', 'test', 'col2)";
Run Code Online (Sandbox Code Playgroud)

以下是我要做的事情:Col1是主键.如果存在重复,则检查col2的插入值是否为空.如果没有,它将使用值更新,否则值将保持不变.

此插入失败.当我尝试在sqlyog中手动运行它(插入实际值代替变量)时,我收到以下错误:错误代码:1064

您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在'IS NOT NULL .....'附近使用正确的语法

我已经检查了MySQL参考手册中的IS NOT NULL比较运算符(http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#operator_is-not-null),以及INSERT ... ON DUPLICATE KEY UPDATE语法(http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html)并相信我正确使用两者,但显然不是案件.

我究竟做错了什么?

作为参考,我使用MySQL 5并且脚本在RHEL5服务器上运行.

mysql mysql-error-1064

14
推荐指数
1
解决办法
8192
查看次数

使用旧(4.1.1之前)身份验证协议拒绝连接(启用客户端选项'secure_auth')

尝试使用Windows OBDC驱动程序连接到MySQL数据库时遇到问题.有很多关于明显的搜索命中...人们正在使用旧版本,但是,我不是.

mysqld在CentOS 6.4 32bit上

./usr/libexec/mysqld  Ver 5.1.69 for redhat-linux-gnu on i386 (Source distribution)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因此,我无法理解4.1.1协议的来源.有任何想法吗?

odbc mysql-error-1064

14
推荐指数
2
解决办法
7万
查看次数

如何在MySQL中多次使用空变量?

我试图在MySQL语句中检查2个空变量,但我似乎可以得到它的语法.这是我现在拥有的,它一直给我一个错误.谁能告诉我如何正确地做到这一点?

  SELECT threads, userid, username, usergroupid
    FROM " . TABLE_PREFIX . "user
   WHERE  
    " . iif(!empty($exuserids), "AND userid NOT IN ($exuserids)") . "
    " . iif(!empty($exgroups), "AND usergroupid NOT IN ($exgroups)") . "
ORDER BY threads DESC 
   LIMIT 1
Run Code Online (Sandbox Code Playgroud)

php mysql sql mysql-error-1064

13
推荐指数
1
解决办法
150
查看次数

如何在插入多行时使用"ON DUPLICATE KEY UPDATE"增加MySql中的字段?

如何在插入多行时使用"ON DUPLICATE KEY UPDATE"增加MySql中的字段?

一排:

INSERT INTO table 
  (a, counter_elem) 
VALUES 
  (1, 1)
ON DUPLICATE KEY UPDATE counter_elem = counter_elem+1;
Run Code Online (Sandbox Code Playgroud)

对于多行:

INSERT INTO table 
  (a, counter_elem) 
VALUES 
  (1, 1),
  (2, 1)
ON DUPLICATE KEY UPDATE counter_elem = ?;
Run Code Online (Sandbox Code Playgroud)

这不起作用:

counter_elem = VALUES(counter_elem)+1
Run Code Online (Sandbox Code Playgroud)

mysql sql mysql-error-1064

13
推荐指数
1
解决办法
9378
查看次数

MySQL查询不适用于NOT IN

我正在编写一个无法正常工作的查询

我的查询:

SELECT * 
FROM admin_marker 
WHERE admin_marker.city NOT IN (SELECT target FROM messsage)
Run Code Online (Sandbox Code Playgroud)

它说

#1267 - 操作'='的非法混合排序
(utf8_general_ci,IMPLICIT)和
(utf8_unicode_ci,IMPLICIT)

php mysql mysql-error-1064

12
推荐指数
1
解决办法
1397
查看次数

这个MySQL查询有什么问题?

现在是上午12:30,我已经连续编码了9个小时.我真的需要完成这个项目,但MySQL正在搞乱我的截止日期.你可以为我检查这个片段,看看你是否能找出问题所在?

PHP/MySQL查询

$q = $this->db->query("SELECT * FROM bans WHERE ip='".$ip."'");
Run Code Online (Sandbox Code Playgroud)

继续返回以下错误...

MYSQL错误[2010年10月6日晚上11:31 CDT]
您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行(1064)'*FROM禁止WHERE ip ='206.53.90.231'附近使用正确的语法

我没有看到查询有任何问题.我甚至尝试过包含变量$ ip的不同方法,但没有用.

编辑:
只是在这里添加,我的数据库中的IP列是一个varchar(255).

编辑2:
这是受影响的整个代码.请记住,这一切都在课堂上.如果我遗失了什么,请告诉我.

来自另一个函数的行

if($this->isBanned($_SERVER['REMOTE_ADDR'])===true) { return json_encode(array('error'=>'You are banned from this ShoutBox.')); }
Run Code Online (Sandbox Code Playgroud)

受影响的功能

function isBanned($ip) {
    $q = $this->db->query("SELECT * FROM bans WHERE ip='".$ip."'"); $num = $this->db->affected_rows;
    if($num>0) { $row = $this->db->fetch_array($q); if(($row['expires'] < time()) && ($row['expires'] !== 0)) { $this->unbanUser($ip,'internal'); return false; } return true; } return false;
}
Run Code Online (Sandbox Code Playgroud)

unbanUser功能

function unbanUser($ip,$t='box') { …
Run Code Online (Sandbox Code Playgroud)

php mysql database mysql-error-1064

11
推荐指数
1
解决办法
299
查看次数

更改表以提供外键约束

我有一个表有两列,我从两个不同的表复制.我现在要做的是给下面显示的列名email和id一个外键约束.

ALTER TABLE users_role_map
ADD CONSTRAINT FK_users_role_map
FOREIGN KEY (email) REFERENCES usert(email),
FOREIGN KEY (id) REFERENCES rolet(id)
ON UPDATE CASCADE
ON DELETE CASCADE;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

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 'FOREI
GN KEY (id) REFERENCES rolet(id)
ON UPDATE CASCADE
ON DELETE CASCADE' at line 4
Run Code Online (Sandbox Code Playgroud)

mysql mysql-error-1064

11
推荐指数
1
解决办法
7万
查看次数

如何在OS X上以root身份登录MySQL?

我刚刚在我的计算机上设置了MySQL(OS X 10.7),它似乎正常工作,通过活动监视器中的"mysqld"和我的系统偏好设置中的新图标来判断.

但是我在使用MySQL时遇到了麻烦,因为我需要至少以root用户身份登录,但它不允许我这样做.那么让我们来看看我一直在做的事情和我得到的错误消息:

首先,我通过"mysql"unix可执行文件启动MySQL.这似乎有效,因为我的条目现在在前面

 mysql> 
Run Code Online (Sandbox Code Playgroud)

另外,我可以输入

 help;
Run Code Online (Sandbox Code Playgroud)

我得到了MySQL的帮助列表.那么我去做一些事情,比如创建一个数据库:

 CREATE DATABASE books;
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

 ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'books'
Run Code Online (Sandbox Code Playgroud)

那么我认为我需要登录,并且以root用户身份登录就足够了.我输入以下内容:

 mysql -u root -p;
Run Code Online (Sandbox Code Playgroud)

但我得到1064错误说我的语法错了.我已经浏览了很多网站,这似乎从来都不是一个有问题的步骤.我有什么问题的线索吗?

mysql macos mysql-error-1064 osx-lion

11
推荐指数
2
解决办法
8万
查看次数

标签 统计

mysql-error-1064 ×10

mysql ×9

php ×3

sql ×3

database ×1

function ×1

macos ×1

null ×1

odbc ×1

osx-lion ×1