Clojure MySQL语法错误异常(“[...] near”?????????? [...] [英] Clojure MySQL Syntax Error Exception ("[...] near '????????????????' [...]")

查看:121
本文介绍了Clojure MySQL语法错误异常(“[...] near”?????????? [...]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有一个mysqld在localhost:3306上运行,数据库名为 clj_db
用户'clj_user'@'localhost'用密码'clj_pass'可以访问此数据库。



当尝试select * from clj_table com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的SQL语法有一个错误;检查对应于您的MySQL服务器版本的手册正确的语法使用附近'?????????? 在第1行。



我做错了什么?



code> clj_db 。 clj_table

  CREATE TABLE`clj_table`(
`col_one` int(11)NOT NULL,
`col_two` int(11)NOT NULL
)ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

mysql_test.clj

 (ns test.mysql 
(:use clojure.contrib.sql)


(def db-settings
{:classnamecom.mysql.jdbc.Driver
:subprotocolmysql
:subname// localhost:3306 / clj_db
:userclj_user
:passwordclj_pass})

(with-connection db-settings
(with-query-results rs [select * from clj_table]
(dorun map#(println(:col_one:col_two%))rs))
))

输出

 线程main中的异常com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的SQL语法中的错误;检查对应于您的MySQL服务器版本的手册在第1行(mysql_test.clj:0)
附近的'??????????' clojure.lang.Compiler.eval(Compiler.java:4658)
at clojure.lang.Compiler.load(Compiler.java:4972)
at clojure.lang.Compiler.loadFile(Compiler.java: 4939)
at clojure.main $ load_script__7405.invoke(main.clj:213)
at clojure.main $ script_opt__7442.invoke(main.clj:265)
at clojure.main $ main__7466 .doInvoke(main.clj:346)
在clojure.lang.RestFn.invoke(RestFn.java:441)
在clojure.lang.Var.invoke(Var.java:367)
在clojure.lang.AFn.applyToHelper(AFn.java:179)
在clojure.lang.Var.applyTo(Var.java:476)
在clojure.main.main(main.java: 37)
Caused by:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的SQL语法中有错误;检查对应于您的MySQL服务器版本的手册,在第1行附近使用正确的语法使用
在com.mysql.jdbc.SQLError .createSQLException(SQLError.java:1048)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3563)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3495 )
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com。 mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2687)
at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1859)
at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer ConnectionImpl.java:3593)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2199)
at com.mysql.jdbc.ConnectionImpl。< init>(ConnectionImpl.java:784 )
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:350)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284)
在java。 sql.DriverManager.getConnection(libgcj.so.10)
在clojure.contrib.sql.internal $ get_connection__218.invoke(internal.clj:85)
在clojure.contrib.sql.internal $ with_connection_STAR ___ 226。 invoke(internal.clj:102)
at test.mysql $ eval__386.invoke(mysql_test.clj:12)
at clojure.lang.Compiler.eval(Compiler.java:4642)
... 10 more


解决方案



我有com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败。
我找到此主题,其中



我添加了选项-Djava.net.preferIPv4Stack = true,现在可以正常工作。



感谢大家!


I'm having trouble doing anything with clojure.contrib.sql beyond establishing a connection.

I have a mysqld running on localhost:3306 with a database called clj_db. The user 'clj_user'@'localhost' with password 'clj_pass' can access this database.

When trying to "select * from clj_table" I get a "com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 1".

What am I doing wrong?

clj_db.clj_table

CREATE TABLE `clj_table` (
  `col_one` int(11) NOT NULL,
  `col_two` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

mysql_test.clj

(ns test.mysql
    (:use clojure.contrib.sql)
)

(def db-settings
    {:classname "com.mysql.jdbc.Driver"
    :subprotocol "mysql"
    :subname "//localhost:3306/clj_db"
    :user "clj_user"
    :password "clj_pass"})

(with-connection db-settings
    (with-query-results rs ["select * from clj_table"]
        (dorun (map #(println (:col_one :col_two %)) rs))
    ))

Output

Exception in thread "main" com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 1 (mysql_test.clj:0)
   at clojure.lang.Compiler.eval(Compiler.java:4658)
   at clojure.lang.Compiler.load(Compiler.java:4972)
   at clojure.lang.Compiler.loadFile(Compiler.java:4939)
   at clojure.main$load_script__7405.invoke(main.clj:213)
   at clojure.main$script_opt__7442.invoke(main.clj:265)
   at clojure.main$main__7466.doInvoke(main.clj:346)
   at clojure.lang.RestFn.invoke(RestFn.java:441)
   at clojure.lang.Var.invoke(Var.java:367)
   at clojure.lang.AFn.applyToHelper(AFn.java:179)
   at clojure.lang.Var.applyTo(Var.java:476)
   at clojure.main.main(main.java:37)
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 1
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1048)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3563)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3495)
   at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
   at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2687)
   at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1859)
   at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3593)
   at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2199)
   at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:784)
   at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:350)
   at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284)
   at java.sql.DriverManager.getConnection(libgcj.so.10)
   at clojure.contrib.sql.internal$get_connection__218.invoke(internal.clj:85)
   at clojure.contrib.sql.internal$with_connection_STAR___226.invoke(internal.clj:102)
   at test.mysql$eval__386.invoke(mysql_test.clj:12)
   at clojure.lang.Compiler.eval(Compiler.java:4642)
   ...10 more

解决方案

I've switched to Sun's JDK6 instead of GIJ.

I got "com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure". I found this thread, which really helped me a lot.

I've added the option "-Djava.net.preferIPv4Stack=true" and it now works fine.

Thanks everybody!

这篇关于Clojure MySQL语法错误异常(“[...] near”?????????? [...]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆