问题描述
我正在使用SSMS,我试图将来自两个不同数据库的两个表连接到同一服务器上。
两个表有一个公用的from multiprocessing import Process
from time import sleep
spinnerFrames = [
"/","-","\\","|",]
def spinner():
i = 0
while True:
print(spinnerFrames[i],end='\r')
i = i + 1
if (i == 3):
i = 0
sleep(0.15)
if __name__ == '__main__':
p = Process(target=spinner)
p.start()
sleep(3)
p.terminate()
print("Done!")
列。
我的查询是:
id
我收到此错误:
在等于的操作中,无法解决“ latin1_General_CI_AI”和“ french_CI_AS”之间的排序规则冲突。
解决方法
您的两个数据库没有相同的排序规则。您需要在联接中指定“ COLLATE DATABASE_DEFAULT”子句。
select * from db1.dbo.EPH e join db2.dbo.SALARIE s on e.id COLLATE DATABASE_DEFAULT=s.id COLLATE DATABASE_DEFAULT
应该可以解决问题。
,在Microsoft SQL Server中,可以在列级别设置排序规则。当您比较(或连接)查询中具有不同排序规则的两列时。
示例:
SELECT * FROM db1.dbo.EPH e
JOIN db2.dbo.SALARIE s
ON e.id COLLATE DATABASE_DEFAULT = s.id
,
尝试使用COLLATE Latin1_General_CI_AS
#include "Server.h"
Server::Server(QObject *parent) : QObject(parent)
{
server = new QTcpServer(this);
qDebug() << connect(server,SIGNAL(newConnection()),SLOT(newConnection()));
qDebug() << connect(server,SIGNAL(bytesWritten()),SLOT(bytesWritten()));
qDebug() << "Listening:" << server->listen(QHostAddress::Any,1451);
server->waitForNewConnection(-1);
}
void Server::newConnection()
{
qDebug("Connection received");
client = server->nextPendingConnection();
client->write("Some random data\n");
bool returnValue = client->flush();
qDebug() << "Return value: " << returnValue;
qDebug() << client->waitForBytesWritten(-1);
qDebug() << "Error: " << client->errorString();
qDebug() << "Bytes written";
}
void Server::bytesWritten(qint64 bytes)
{
qDebug() << "Bytes written: " << QString::number(bytes);
}
void Server::writeData(std::string data)
{
QByteArray byteArray = QByteArray(data.c_str());
qDebug() << "Write data: " << QString::fromStdString(data);
client->write(byteArray);
}