Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已解决] 7.1升7.2时出错

[复制链接]
yfxz 发表于 2009-11-21 22:55:59 | 显示全部楼层 |阅读模式
本帖最后由 下砂 于 2009-11-23 09:30 编辑

Discuz! info: MySQL Query Error

Time: 2009-11-20 5:16pm
Script: /bbs/upgrade13.php

SQL: CREATE TABLE [Table]optionvalue76 (
tid int(10) NOT NULL DEFAULT '0',
fid int(10) NOT NULL DEFAULT '0',
lpname mediumtext NOT NULL DEFAULT '',
Add mediumtext NOT NULL DEFAULT '',
hall smallint(6) unsigned NOT NULL DEFAULT '0',
balcony smallint(6) unsigned NOT NULL DEFAULT '0',
bathroom smallint(6) unsigned NOT NULL DEFAULT '0',
property smallint(6) unsigned NOT NULL DEFAULT '0',
mode smallint(6) unsigned NOT NULL DEFAULT '0',
makes smallint(6) unsigned NOT NULL DEFAULT '0',
face smallint(6) unsigned NOT NULL DEFAULT '0',
design smallint(6) unsigned NOT NULL DEFAULT '0',
restate smallint(6) unsigned NOT NULL DEFAULT '0',
sp smallint(6) unsigned NOT NULL DEFAULT '0',KEY tid (tid),
KEY fid (fid),
KEY hall (hall),
KEY balcony (balcony),
KEY bathroom (bathroom),
KEY property (property),
KEY mode (mode),
KEY makes (makes),
KEY face (face),
KEY design (design),
KEY restate (restate),
KEY sp (sp)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
Error: 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 'Add mediumtext NOT NULL DEFAULT '',
hall smallint(6) unsigned NOT NULL DEFAULT ' at line 5
Errno.: 1064

Similar error report has been dispatched to administrator before.

http://faq.comsenz.com 搜索此错误的解决方案


不知如何解决
 楼主| yfxz 发表于 2009-11-22 00:08:38 | 显示全部楼层
终于研究了一天,顺利解决!!!
回复

使用道具 举报

cool530 发表于 2009-11-23 01:12:55 | 显示全部楼层
怎么解决的 ?????
回复

使用道具 举报

cool530 发表于 2009-11-23 01:22:59 | 显示全部楼层
Discuz! info: Can not connect to MySQL server

Time: 2009-11-23 1:19am
Script: /bbs/index.php

Error: Access denied for user 'sq_c001530'@'localhost' (using password: YES)
Errno.: 1045

Similar error report has been dispatched to administrator before.

到 http://faq.comsenz.com 搜索此错误的解决方案


我的也出现了   急啊  怎么解决啊???
回复

使用道具 举报

cool530 发表于 2009-11-23 01:27:12 | 显示全部楼层
???????????????
回复

使用道具 举报

cool530 发表于 2009-11-23 01:28:36 | 显示全部楼层
有人知道吗?????
回复

使用道具 举报

cool530 发表于 2009-11-23 01:31:13 | 显示全部楼层
?????????有谁知道啊???
回复

使用道具 举报

 楼主| yfxz 发表于 2009-11-23 09:18:04 | 显示全部楼层
当你试着联接MySQL服务器时,如果你碰到Access denied错误,显示在下面的表指出一些你能用来更正这个问题的动作:

你是在安装MySQL以后运行mysql_install_db的脚本,来设置初始授权表内容吗?如果不是,这样做。见6.10 设置初始MySQL权限。通过执行这个命令测试初始权限:
shell> mysql -u root test

服务器应该让你无误地连接。你也应该保证你在MySQL数据库目录有一个文件“user.MYD”。通常,它是“PATH/var/mysql/user.MYD”,在此PATH是MySQL安装根目录的路径。

在一个新的安装以后,你应该连接服务器并且设置你的用户及其存取许可:
shell> mysql -u root mysql

服务器应该让你连接,因为MySQL root用户初始时没有口令。既然那也是一个安全风险,当你正在设置其他MySQL用户时,设定root口令是一件重要的事请。如果你作为root尝试连接并且得到这个错误:

Access denied for user: '@unknown' to database mysql

这意味着,你没有一个条目在user表中的一个User列值为'root'并且mysqld不能为你的客库解析主机名。在这种情况下,你必须用--skip-grant-tables选项重启服务器并且编辑你的“/etc/hosts”或“windowshosts”文件为你的主机增加一个条目。

如果你从一个3.22.11以前的版本更新一个现存的MySQL安装到3.22.11版或以后版本,你运行了mysql_fix_privilege_tables脚本吗?如果没有,运行它。在GRANT语句变得能工作时,授权表的结构用MySQL 3.22.11修改 。
如果你直接对授权表做修改(使用INSERT或UPDATE语句)并且你的改变似乎被忽略,记住,你必须发出一个FLUSH PRIVILEGES语句或执行一个mysqladmin flush-privileges命令导致服务器再次读入表,否则你的改变要道下一次服务器被重启时再生效。记住在你设定root口令以后,你将不需要指定它,直到在你清洗(flush)权限以后,因为服务器仍然不会知道你改变了口令!
如果你的权限似乎在一个会话(session)当中改变了,可能是一个超级用户改变了他们。再次装入授权表作用于新客户连接,但是它也影响现存的连接,如6.9 权限改变何时生效小节所述。
为了测试,用--skip-grant-tables选项启动mysqld守护进程,然后你可以改变MySQL授权表并且使用mysqlaccess脚本检查你的修改是否有如期的效果。当你对你的改变满意时,执行mysqladmin flush-privileges告诉mysqld服务器开始使用新的权限表。注意:再次装入授权表覆盖了--skip-grant-tables选项。这允许你告诉服务器开始使用授权表,而不用停掉并重启它。
如果你有一个Perl、Python或ODBC程序的存取问题,试着用mysql -u user_name db_name或mysql -u user_name -pyour_pass db_name与服务器连接。如果你能用mysql客户连接,这是你程序的一个问题而不是存取权限的问题。(注意在-p和口令之间没有空格;你也能使用--password=your_pass句法指定口令。)
如果你不能让口令工作,记得如果你用INSERT, UPDATE或SET PASSWORD语句设置口令,你必须使用PASSWORD()函数。如果你用GRANT ... INDENTIFIED BY语句或mysqladmin password命令指定口令,PASSWORD()函数是不需要的。见6.12 怎样设置口令。
localhost是你本地主机名的一个同义词,并且也是如果你不明确地指定主机而客户尝试连接的缺省主机。然而,如果你正在运行于一个使用MIT-pthreads的系统上,连接localhost是不行的(localhost连接使用Unix套接字进行,它没被 MIT-pthreads支持),为了在这样的系统上避免这个问题,你应该使用--host选项明确地命名服务器主机,这将做一个 TCP/IP连接到mysqld服务器。在这种情况下,你必须有在服务器主机上的user表中条目的你真实的主机名。(即使你在服务器同一台的主机上运行一个客户程序,这也是真的。)
当尝试用mysql -u user_name db_name与数据库连接时,如果你得到一个Access denied错误,你可能有与user桌有关的问题,通过执行mysql -u root mysql并且发出下面的SQL语句检查:
mysql> SELECT * FROM user;

结果应该包含一个有Host和User列的条目匹配你的计算机主机名和你的MySQL用户名。

Access denied错误消息将告诉你,你正在用哪个用户尝试登录,你正在试图用连接哪个主机,并且你是否正在使用一个口令。通常,你应该在user表中有一个条目,正确地匹配在错误消息给出的主机名和用户名。
如果当你试着从一个不是MySQL服务器正在运行的主机上连接时,你得到下列错误,那么在user表中没有匹配那台主机行:
Host ... is not allowed to connect to this MySQL server

你可以通过使用mysql命令行工具(在服务器主机上!)修正它,把你正在试图连接的用户/主机名组合新加一行到user表中。如果你不在运行MySQL 3.22并且你不知道你正在从它连接的机器的IP数字或主机名,你应该把一个'%'条目作为Host列值放在user表中并且在服务器机器上使用--log选项重启mysqld。在试图从客户机器连接以后,在MySQL记录文件中的信息将显示你如何真正进行连接。(然后用在记录文件上面显示出的实际的主机名代替user表中的'%'条目。否则,你将有一个不安全的系统。)

如果mysql -u root test工作但是mysql -h your_hostname -u root test导致Access denied,那么在user表中你可能没有你的主机的正确名字。这里的一个普遍的问题是在user表条目中的Host值指定一个唯一的主机名,但是你系统的名字解析例程返回一个完全正规的域名(或相反)。例如,如果你在user表中有一个主机是'tcx'的条目,但是你的 DNS告诉MySQL你的主机名是'tcx.subnet.se',条目将不工作。尝试把一个条目加到user表中,它包含你主机的IP数字作为Host列的值。(另外,你可以把一个条目加到user表中,它有包含一个通配符如'tcx.%'的Host值。然而,使用以“%”结尾的主机名是不安全的并且不推荐!)
如果mysql -u user_name test工作但是mysql -u user_name other_db_name不工作,对other_db_name,你在db表中没有没有一个条目列出。
当在服务器机器上执行mysql -u user_name db_name时,它工作,但是在其它客户机器上执行mysql -h host_name -u user_name db_name时,它却不工作,你没有把客户机器列在user表或db表中。
如果你不能弄明白你为什么得到Access denied,从user表中删除所有Host包含通配符值的条目(包含“%”或“_”的条目)。一个很普遍的错误是插入用Host='%'和User='some user'插入一个新条目,认为这将允许你指定localhost从同一台机器进行连接。它不工作的原因是缺省权限包括一个有Host='localhost'和User=''的条目,因为那个条目一个比'%'更具体的Host值'localhost',当从localhost连接时,它用于指向新条目!正确的步骤是插入Host='localhost'和User='some_user'的第2个条目,或删除Host='localhost'和User=''条目。
如果你得到下列错误,你可以有一个与db或host表有关的问题:
Access to database denied

如果从db表中选择了在Host列有空值的条目,保证在host表中有一个或多个相应的条目,指定运用db表中的哪些主机。如果在使用SQL命令SELECT ... INTO OUTFILE或LOAD DATA INFILE时,你得到错误,在user表中的你的条目可能启用file权限。

记住,客户程序将使用在配置文件或环境变量被指定了的连接参数。如果当你不在命令行上指定他们时,一个客户似乎正在发送错误的缺省连接参数,检查你的环境和在你的主目录下的“.my.cnf”文件。你也可以检查系统范围的MySQL配置文件,尽管更不可能将在那里指定那个客户的连接参数。见4.15.4 选项文件。如果当你没有任何选项运行一个客户时,你得到Access denied,确认你没在任何选项文件里指定一个旧的口令!见4.15.4 选项文件。
如果任何其它事情失败,用调试选项(例如,--debug=d,general,query)启动mysqld守护进程。这将打印有关尝试连接的主机和用户信息,和发出的每个命令的信息。见G.1 调试一个MySQL服务器。
如果你有任何与MySQL授权表的其它问题,而且觉得你必须邮寄这个问题到邮寄表,总是提供一个MySQL授权表的倾倒副本(dump)。你可用mysqldump mysql命令倾倒数据库表。象平时一样,用mysqlbug脚本邮寄你的问题。在一些情况下你可能用--skip-grant-tables重启mysqld以便能运行mysqldump。
回复

使用道具 举报

下砂 发表于 2009-11-23 09:30:16 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 16:27 , Processed in 0.025856 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表